Node.js 节点不工作的Firebase web推送通知
我正在使用firebase和NodeJs服务器构建一个发送web推送通知的应用程序,但我遇到了一个“凭据不匹配”错误,我该如何解决这个问题 我首先从控制台给我的“generate private key”按钮生成一个json文件,然后从我的服务器代码向我的应用程序添加admin SDKNode.js 节点不工作的Firebase web推送通知,node.js,firebase,push-notification,firebase-cloud-messaging,web-push,Node.js,Firebase,Push Notification,Firebase Cloud Messaging,Web Push,我正在使用firebase和NodeJs服务器构建一个发送web推送通知的应用程序,但我遇到了一个“凭据不匹配”错误,我该如何解决这个问题 我首先从控制台给我的“generate private key”按钮生成一个json文件,然后从我的服务器代码向我的应用程序添加admin SDK var admin = require("firebase-admin"); var serviceAccount = require("path/to/serviceAccoun
var admin = require("firebase-admin");
var serviceAccount = require("path/to/serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://nodeproject-2bc3o.firebaseio.com"
});
然后我正在构建发送请求
// This registration token comes from the client FCM SDKs.
var registrationToken = 'YOUR_REGISTRATION_TOKEN';
var message = {
data: {
score: '850',
time: '2:45'
},
token: registrationToken
};
// Send a message to the device corresponding to the provided
// registration token.
admin.messaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
文档中说,//此注册令牌来自客户端FCM SDK
,因此我使用从客户端获得的令牌作为我的注册令牌
,我通过以下方式从客户端javascript代码中检索该令牌,然后将其发送到服务器
messaging.getToken().then((currentToken) => {
if (currentToken) {
sendTokenToServer(currentToken);
updateUIForPushEnabled(currentToken);
}
最后,在使用令牌从服务器发送消息后,我得到以下错误
errorInfo: {
code: 'messaging/mismatched-credential',
message: 'SenderId mismatch'
},
codePrefix: 'messaging'
}
检索客户端令牌、将其发送到服务器,然后使用它向客户端发送推送通知的正确方法是什么?或者我做错了什么?如果使用Firebase云函数作为后端服务器,那么
serviceAccountKey.json
就不是必需的,而且更简单
看
这些行加载firebase函数和firebase管理模块,并初始化一个管理应用程序实例,从中可以进行云Firestore更改
fcm示例是我发现了问题,我使用的是另一个项目中的Firebase Admin SDK。
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');
// The Firebase Admin SDK to access Cloud Firestore.
const admin = require('firebase-admin');
admin.initializeApp();