我正在发送带有APNs Auth Key(“永不过期”)的推送通知,这种通知效果很好,直到我突然得到
403 Forbidden: {"reason":"InvalidProviderToken"}
作为发送推送通知时的响应。当它工作一次并突然间没有失效日期时,可能是什么原因?与此同时,它再次推动了一些推动,但现在我再次得到错误...有没有其他人经历过这个?
编辑
不确定,但似乎这只发生在Ubuntu服务器上,而不是在我的本地(OS X)机器上......
我在几种情况下看到过这种情况:
InvalidProviderToken
拒绝而不是ExpiredProviderToken
拒绝。检查日志是否有令牌到期消息。检查系统时钟以确保您没有生成带有时间戳偏差的令牌。服务器确实响应InvalidToken和/或ExpiredToken错误。您的身份验证令牌不应包含任何'=','+',' - ',请仔细检查您的令牌是否包含任何此令牌。此外,签名(令牌的第3部分,应该是Base64URL编码,因此没有前面提到的字符)。
当使用相同的连接向不同的团队ID发送推送时,我们遇到了完全相同的问题。重现的步骤是:
com.companyA.xxx
的主题1234
:APNS接受并成功传递推送。io.companyB.xxx
的主题5678
:APNS响应HTTP 400 BadRequest The device token does not match the specified topic
io.companyB.xxx
的主题5678
:APNS响应HTTP 403 Forbidden: the provider token is not valid or the token signature could not be verified
。在此之后,无法发送任何推送,并且必须关闭并重新打开连接。
我们最终做的解决方法是为每个团队打开一个连接。 qazxsw poi没有提到类似的东西,所以我认为这是一个错误,我打开了一个错误报告。
对我来说服务器时间无效,修复服务器时间解决了问题
对我来说,配置错误存在问题。我使用了错误的团队ID。在查看任何其他解决方案之前,请确保所有配置都正确无误。
我一直在使用密钥的名称而不是密钥ID。验证APNS documentation显示正确的价值。
Apple的APN https://developer.apple.com/account/resources/authkeys/review/说:
APN仅支持使用ES256算法签名的提供程序身份验证令牌。不安全的JWT [JSON Web令牌]或使用其他算法签名的JWT将被拒绝,您的提供者服务器将收到InvalidProviderToken(403)响应。
所以,似乎问题不在于你的认可;它实际上是从您的密钥生成的Web令牌的问题。