Twilioの「プログラム可能なビデオ」JWTアクセストークンを正しく処理する方法は?(アンドロイド)

アルカディ

TwilioのProgrammableビデオをAndroidアプリに埋め込もうとしています。

次のコードでアクセストークンを取得するために "com.twilio.sdk"% "twilio-java-sdk"% "6.3.0"ライブラリを使用するエンドポイントをJavaサーバーに作成しました。

private static final String ACCOUNT_SID = "ACxxxxx";
private static final String API_KEY_SID = "SKxxxxx";
private static final String API_KEY_SECRET = "aa8xxxxx";
private static final String TWILIO_CONFIGURATION_SID = "VSxxxxx";

public Result token(String identity) {
    return ok(Json.toJson(new ResponseMessage(createToken(identity))));
}

public static String createToken(String identity) {
    ConversationsGrant grant = new ConversationsGrant();
    grant.configurationProfileSid = TWILIO_CONFIGURATION_SID;

    AccessToken token = new AccessToken.Builder(
            ACCOUNT_SID,
            API_KEY_SID,
            API_KEY_SECRET
    ).identity(identity).grant(grant).ttl(86400).build();

    return token.toJWT();
}

次に、このエンドポイントからAndroidアプリでトークンを受け取り、このトークンを使用してAccessManagerをインスタンス化します

new AccessManager(MyActivity.this,
            videoToken,
            new AccessManager.Listener() {
        @Override
        public void onTokenExpired(AccessManager twilioAccessManager) {
            //Expired :(
        }

        @Override
        public void onTokenUpdated(AccessManager twilioAccessManager) {
            //Updated!
        });

、およびaccessManagerListenerで次のコードを使用してTwilioConversationsClientを作成しようとしています。

TwilioConversationsClient.create(twilioAccessManager, new TwilioConversationsClient.Listener() {
        @Override
        public void onStartListeningForInvites(TwilioConversationsClient conversationsClient) {
            Log.d(TAG, "TwilioConversationsClient.Listener: onStartListeningForInvites");
        }

        @Override
        public void onStopListeningForInvites(TwilioConversationsClient conversationsClient) {
            Log.d(TAG, "TwilioConversationsClient.Listener: onStopListeningForInvites");
        }

        @Override
        public void onFailedToStartListening(TwilioConversationsClient conversationsClientd,
                                             TwilioConversationsException e) {
            Log.d(TAG, "TwilioConversationsClient.Listener: onFailedToStartListening");
        });

エラーメッセージが表示された「onFailedToStartListening」コールバックに入るたびに:

com.twilio.conversations.TwilioConversationsException:コード:103、メッセージ:31201認証に失敗しました

最も奇妙なことは、「//更新されました!」から新しいトークンをコピーした場合です。ブロック(上記を参照)し、手動でコードに貼り付けます

new AccessManager(MyActivity.this,
            videoToken

代わりに、ほんの数秒前にサーバーから受け取ったvideoTokenはすべてスムーズに機能し、onStartListeningForInvitesコールバックに入ります。答えを読み込もうとしたときに、サーバーのエンコードまたはエンコードに何か問題がありますか?私は数日を過ごしますが、それでもこの問題を解決することはできません。

さらに、JavaサーバーコードをPHPに置き換えようとすると、同じ結果が得られました。コンソール(ターミナル)でトークンを生成し、それをAndroidアプリのコードに貼り付けると、すべてが正常に機能します。しかし、リモートサーバーからトークンを取得しようとすると、「コード:103、メッセージ:31201認証に失敗しました」という同じエラーが発生します。

また、Twilio VoiceおよびIp-Messagingとの統合を使用していますが、トークンで問題が発生したことはありません。

JWTトークン(1つはサーバーから、もう1つはローカルで生成されたもの)をデコードする場合、違いは作成時間と有効期限だけではありません。

ここに画像の説明を入力してください

どんな提案もありがたいです!

アルカディ

最後に、Twilioの人たちが回避策を教えてくれました。何らかの理由でTtl86400をTwilioサーバーで正しく処理できませんでした。このライフタイムの半分のTtlは正常に機能します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++ 98、C ++ 11のクロスコンパイル可能なコードでオーバーライドを処理するエレガントな方法は?

分類Dev

マルチスレッドアプリケーションでのオプションのデバッグ出力-つまり、デッドロックやバグを把握するためではなく、*クライアント用*を意味します。

分類Dev

クライアント側の処理でデータテーブルを遅延ロードする方法は?

分類Dev

クライアント側でJWTトークンのペイロードをデコードする方法は?

分類Dev

Officeアドインを使用してOutlookの連絡先のリストにプログラムでアクセスすることは可能ですか?

分類Dev

デザインモードでアクセスして作成したプログラムを開くには?

分類Dev

バックグラウンドでビデオファイルをアップロードする方法は?

分類Dev

TwilioビデオとクライアントJavascriptSDKはクロスプラットフォームですか?

分類Dev

アプリケーションがバックグラウンドプロセスからiOSのアクティブプロセスに移行するときに、編集可能なアラートビューを表示します

分類Dev

Netsuite Suitelet:ガバナンスの制限に達することなく、トランザクションラインアイテムのリストを反復処理してレコードをロードおよび送信します

分類Dev

アンチウイルスプログラムがビルドのパフォーマンスに影響を与えている可能性があります。AndroidStudioは次のディレクトリをチェックしました。

分類Dev

アセンブラプログラムをシェルコードに正しく変換する方法は?

分類Dev

オンラインでデータベースをアップロード/アクセスする方法

分類Dev

Scala Sparkプログラム用のjenkinsを使用したMavenビルド:「インストールするプライマリアーティファクトはなく、代わりにアタッチされたアーティファクトをインストールします

分類Dev

プログラムをSSDにインストールする必要があるのはなぜですか?メモリにロードした後、ディスクアクセスを頻繁に行うべきではありませんか?

分類Dev

Windows 101803クリーンインストールでイベントビューアがイベントソースとイベントログのドロップダウンにデータを入力しなくなったのはなぜですか

分類Dev

Windows 101803クリーンインストールでイベントビューアがイベントソースとイベントログのドロップダウンにデータを入力しなくなったのはなぜですか

分類Dev

フラグメントのBeanプリプロセッサがフォームオブジェクトを正しく処理しない

分類Dev

追加のフレームワークなしでHerokuのにデプロイし、アクセスのJavaのWebSocketエンドポイントにする方法

分類Dev

Firebaseログインを最初のアクセスとして処理する方法

分類Dev

アンドロイドクロームのようなプログレスバーを取得する方法

分類Dev

任意のアクティビティでバックグラウンドプロセスからのアラートダイアログを表示する

分類Dev

アンドロイドスタジオのプレイストアplay-services-gcm:15.0.1でグーグルマップにアクセスする方法は?

分類Dev

OpenGL:ビデオメモリからテクスチャを正しくロード/アンロードする方法は?

分類Dev

ビュークラスからダイアログへのメッセージ送信を処理する方法は?

分類Dev

より広いロードがマップされていないデータにアクセスする可能性があるのに、コンパイラが1バイトのロードではなく4バイトのロードを生成するのはなぜですか?

分類Dev

より広いロードがマップされていないデータにアクセスする可能性があるのに、コンパイラが1バイトのロードではなく4バイトのロードを生成するのはなぜですか?

分類Dev

YouTubeでライブストリームビデオのダウンロード可能なURLを取得する方法

分類Dev

些細なmacOSアセンブリ64ビットプログラムのスタックアライメントが正しくない

Related 関連記事

  1. 1

    C ++ 98、C ++ 11のクロスコンパイル可能なコードでオーバーライドを処理するエレガントな方法は?

  2. 2

    マルチスレッドアプリケーションでのオプションのデバッグ出力-つまり、デッドロックやバグを把握するためではなく、*クライアント用*を意味します。

  3. 3

    クライアント側の処理でデータテーブルを遅延ロードする方法は?

  4. 4

    クライアント側でJWTトークンのペイロードをデコードする方法は?

  5. 5

    Officeアドインを使用してOutlookの連絡先のリストにプログラムでアクセスすることは可能ですか?

  6. 6

    デザインモードでアクセスして作成したプログラムを開くには?

  7. 7

    バックグラウンドでビデオファイルをアップロードする方法は?

  8. 8

    TwilioビデオとクライアントJavascriptSDKはクロスプラットフォームですか?

  9. 9

    アプリケーションがバックグラウンドプロセスからiOSのアクティブプロセスに移行するときに、編集可能なアラートビューを表示します

  10. 10

    Netsuite Suitelet:ガバナンスの制限に達することなく、トランザクションラインアイテムのリストを反復処理してレコードをロードおよび送信します

  11. 11

    アンチウイルスプログラムがビルドのパフォーマンスに影響を与えている可能性があります。AndroidStudioは次のディレクトリをチェックしました。

  12. 12

    アセンブラプログラムをシェルコードに正しく変換する方法は?

  13. 13

    オンラインでデータベースをアップロード/アクセスする方法

  14. 14

    Scala Sparkプログラム用のjenkinsを使用したMavenビルド:「インストールするプライマリアーティファクトはなく、代わりにアタッチされたアーティファクトをインストールします

  15. 15

    プログラムをSSDにインストールする必要があるのはなぜですか?メモリにロードした後、ディスクアクセスを頻繁に行うべきではありませんか?

  16. 16

    Windows 101803クリーンインストールでイベントビューアがイベントソースとイベントログのドロップダウンにデータを入力しなくなったのはなぜですか

  17. 17

    Windows 101803クリーンインストールでイベントビューアがイベントソースとイベントログのドロップダウンにデータを入力しなくなったのはなぜですか

  18. 18

    フラグメントのBeanプリプロセッサがフォームオブジェクトを正しく処理しない

  19. 19

    追加のフレームワークなしでHerokuのにデプロイし、アクセスのJavaのWebSocketエンドポイントにする方法

  20. 20

    Firebaseログインを最初のアクセスとして処理する方法

  21. 21

    アンドロイドクロームのようなプログレスバーを取得する方法

  22. 22

    任意のアクティビティでバックグラウンドプロセスからのアラートダイアログを表示する

  23. 23

    アンドロイドスタジオのプレイストアplay-services-gcm:15.0.1でグーグルマップにアクセスする方法は?

  24. 24

    OpenGL:ビデオメモリからテクスチャを正しくロード/アンロードする方法は?

  25. 25

    ビュークラスからダイアログへのメッセージ送信を処理する方法は?

  26. 26

    より広いロードがマップされていないデータにアクセスする可能性があるのに、コンパイラが1バイトのロードではなく4バイトのロードを生成するのはなぜですか?

  27. 27

    より広いロードがマップされていないデータにアクセスする可能性があるのに、コンパイラが1バイトのロードではなく4バイトのロードを生成するのはなぜですか?

  28. 28

    YouTubeでライブストリームビデオのダウンロード可能なURLを取得する方法

  29. 29

    些細なmacOSアセンブリ64ビットプログラムのスタックアライメントが正しくない

ホットタグ

アーカイブ