首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确处理两个可编程视频JWT接入令牌?(Android)

如何正确处理两个可编程视频JWT接入令牌?(Android)
EN

Stack Overflow用户
提问于 2016-09-22 18:58:49
回答 1查看 499关注 0票数 2

我试图将Twilio的可编程视频嵌入到我的Android应用程序中。

我已经在我的java服务器上创建了一个端点,它使用"com.twilio.sdk“%”twilio“%”%“6.3.0库来获得具有以下代码的访问令牌:

代码语言:javascript
复制
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。

代码语言:javascript
复制
new AccessManager(MyActivity.this,
            videoToken,
            new AccessManager.Listener() {
        @Override
        public void onTokenExpired(AccessManager twilioAccessManager) {
            //Expired :(
        }

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

,并尝试使用以下代码在TwilioConversationsClient中创建accessManagerListener:

代码语言:javascript
复制
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身份验证失败

最奇怪的是,如果我从‘//Updated’复制新的令牌!“块,并将其手工粘贴到代码中。

代码语言:javascript
复制
new AccessManager(MyActivity.this,
            videoToken

相反,我在几秒钟前从服务器接收到的videoToken,一切都很顺利,我进入了onStartListeningForInvites回调。当我试图读取一个答案时,服务器编码或编码可能有问题吗?我花了几天时间,但还是解决不了这个问题。

更重要的是,我试图用PHP替换我的java服务器代码,并得到了同样的结果!如果我在控制台(终端)中生成一个令牌,然后将其粘贴到Android应用程序代码中,那么一切都很好。但是,如果我试图从远程服务器获取令牌,就会收到相同的错误:代码:103,消息: 31201身份验证失败。

我还使用了与Twilio语音和Ip消息的集成,并且在令牌方面我从未遇到过问题。

如果我们解码JWT令牌(一个来自服务器,另一个在本地生成),我们将看到创建时间和过期时间的不同:

如有任何建议请见谅!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-20 14:28:19

最后,来自Twilio的人给了我们一个解决办法。Ttl 86400由于某些原因无法被Twilio服务器正确处理。这半辈子的Ttl效果很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39646930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档