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

Twilio Invalid Access Token Signature (iOS - Swift)

我使用的是他们今天在 CocoaPods 上发布的 Twilio 最新 SDK。我正在尝试使用 Twilio Programmable Voice 为我的应用程序实现 VOIP 功能。我的后端是 .net,它也使用最新版本的 C# Twilio Helper Library。

我的客户端代码如下:

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 Forbidden

Twilio error codes page 上,它被解释为:“访问令牌中提供的到期时间超过了允许的最大持续时间。”这绝对不是我的情况。但是,我尝试在 Token 构造函数中传递具有各种值的过期参数,但结果没有改变。

问题仍然存在。

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

我记得在客户端 (iOS) 上打印 (token)'ing 以查看是否存在编码问题或其他问题,我所看到的只是引号之间的正确标记。由于 token 是一个字符串值,我没有注意它的引号部分。那是我错的地方。