我正在使用他们今天在CocoaPods上发布的Twilio最新SDK。我正在尝试使用Twilio可编程语音将VOIP功能实现到我的应用程序。我的后端是.net,它也使用最新版本的Twilio Helper Library for C#。
我的客户代码如下:
fetchAccessToken { (accessToken: String) in
TwilioVoice.register(withAccessToken: accessToken, deviceToken: deviceToken) { (error) in
if let error = error {
NSLog("An error occurred while registering: \(error.localizedDescription)")
}
else {
NSLog("Successfully registered for VoIP push notifications.")
}
}
}
我在控制台中看到的内容如下:
voipTestWithTwilio[2431:517236] [ERROR TwilioVoice] Inside register:deviceToken:completion:, failed to register for Twilio push notifications. Error:Invalid access token signature
voipTestWithTwilio[2431:517236] An error occurred while registering: Invalid access token signature
这是实际创建令牌的C#代码:
var grant = new VoiceGrant
{
OutgoingApplicationSid = outgoingApplicationSid
};
var grants = new HashSet<IGrant> { { grant } };
var token = new Token(
accountSid: accountSid,
signingKeySid: apiKey,
secret: apiSecret,
identity: identity,
grants: grants
);
return token.ToJwt();
我一直在互联网上寻找问题,到目前为止没有任何帮助。我曾尝试与他们联系,但没有得到任何回复。我还尝试在Twilio上创建新的api键甚至一个新项目。有人可以谈谈这个问题吗?
更新
我在VoiceGrant中添加了推送通知sid,现在我禁止使用403 。
在Twilio error codes page上的解释为:“ 访问令牌中提供的到期时间超过了允许的最大持续时间。”,这绝对不是我的情况。但是,我尝试在Token
构造函数中传递带有各种值的expiration参数,这些值不会改变结果。
问题仍然存在。
答案 0 :(得分:1)
我解决了这个问题。这是因为我的服务器返回了带引号的令牌。
我记得在客户端(iOS)上打印(令牌)以查看是否存在编码问题或某些东西,而我所看到的只是引号之间的正确令牌。由于token是一个字符串值,因此我没有注意它的引号部分。那就是我错了。