我試圖將Twilio的可編程視頻嵌入到我的Android應用程序中。如何正確處理Twilio'可編程視頻'JWT訪問令牌? (Android)
我創建了一個終點我的Java服務器,它使用 「com.twilio.sdk」 % 「twilio-Java的SDK」 % 「6.3.0」 圖書館與下面的代碼獲得訪問令牌上:
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應用程序從這個端點,以及與此令牌
new AccessManager(MyActivity.this,
videoToken,
new AccessManager.Listener() {
@Override
public void onTokenExpired(AccessManager twilioAccessManager) {
//Expired :(
}
@Override
public void onTokenUpdated(AccessManager twilioAccessManager) {
//Updated!
});
實例AccessManager,並試圖與在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");
});
Evetytime我進入 'onFailedToStartListening' 回調與錯誤消息:
com.twilio.conversations.TwilioConversationsException:代碼:103,消息:31201身份驗證失敗
的奇怪的事情,如果我從'// Updated!'複製新的令牌塊(見上文),並且它
new AccessManager(MyActivity.this,
videoToken
代替videoToken手工粘貼到代碼中,我從服務器之前,只是一個秒接收,一切工作順利,我進入onStartListeningForInvites回調。當我嘗試閱讀答案時,可能是服務器編碼或編碼有問題?我花了幾天,但仍然無法解決這個問題。
甚至更多,我試圖用PHP替換我的java服務器代碼,並得到相同的結果!如果我在控制檯(終端)中生成令牌,然後將其粘貼到Android應用代碼中,則一切正常。但是,如果我試圖從遠程服務器獲取令牌,則會收到與'code:103,message:31201 Authentication failed'相同的錯誤。
我還使用與Twilio Voice和Ip-Messaging的集成,並且我從來沒有使用過令牌的問題。
如果我們將解碼JWT令牌(一個從服務器,並在本地另一生成的),我們將看到比唯一的區別是創建和到期時間時間:
任何建議表示讚賞!