Twilio无效的访问令牌签名(iOS-Swift)

时间:2018-09-19 16:34:25

标签: twilio twilio-api

我正在使用他们今天在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参数,这些值不会改变结果。

问题仍然存在。

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。这是因为我的服务器返回了带引号的令牌。

我记得在客户端(iOS)上打印(令牌)以查看是否存在编码问题或某些东西,而我所看到的只是引号之间的正确令牌。由于token是一个字符串值,因此我没有注意它的引号部分。那就是我错了。