我正在使用谷歌火力管理sdk,并按照说明进行设置。我通过FCM发送消息和通知,这没有问题,但最近我注意到我们的指标显示没有通知发送到客户端设备。
查看了Node. js输出并看到:
errorInfo:
{ code: 'messaging/invalid-apns-credentials',
message: 'Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.' },
codePrefix: 'messaging' }
请记住,我最初使用的凭据文件正在工作,环境没有任何变化。
查看文档,除了提供Firebase admin sdk要求开始的json文件之外,没有任何关于令牌过期或处理任何类型的身份验证的内容:
var admin = require("firebase-admin");
var serviceAccount = require("path/to/serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://my-app-id.firebaseio.com"
});
如果我登录到Firebase控制台并检查服务号,我可以看到它,我唯一的选择是生成一个新的私钥(蓝色大按钮)。
我应该做些什么来允许凭据保持有效吗?更新令牌还是什么?FCM安装文档中没有提到这一点,这似乎暗示如果您使用官方的Firebase admin sdk,则不需要任何此类性质的东西。这是我遵循的指南:https://firebase.google.com/docs/admin/setup
如果我需要添加一些额外的代码来捕获证书到期和续订,任何人都可以权衡吗?
谢谢!
查看errorInfo
code
键,我注意到它说:消息传递/无效apns-凭证
,每个errorInfo
code
的更多信息可以在这里找到:https://firebase.google.com/docs/cloud-messaging/admin/errors
这个特定的errorCode
说:
无法发送针对iOS设备的邮件,因为所需的APNSSL证书未上载或已过期。请检查您的开发和生产证书的有效性。
就我个人而言,我的生产APNs证书有问题,并且能够通过developer.apple.com重新生成新证书来解决它
为了回答您最初的问题,APN证书每年都会过期,因此您需要每年重新生成并重新上传它们。
如果为同一AppID创建的新推送证书包含现有应用的捆绑包ID,并且推送证书仅在Firebase中使用,则旧版本的应用应继续使用新证书接收推送通知,无论您使用哪个证书
每当您更新APNS证书时,所有需要消息推送的应用程序版本都会再次收到通知。无需为此更新应用程序。