Node.js 如何在服务器上验证FCM注册令牌?
我获得了用于web推送的Firebase云消息注册令牌。 我把它发送到我的服务器,保存在数据库中,以便以后推送。 但我如何验证此令牌是否有效 我已经尝试过了,但我认为这是用于身份验证令牌的,而不是用于web推送 其他人可以向我的服务器发送随机伪造令牌的请求。我想在保存到数据库之前防止这种情况 编辑:问题解决了,我编写了一个简单的类来快速使用FCM进行web推送。 发送到无效注册令牌时,您将收到: 检查传递给服务器的注册令牌的格式。确保它与客户端应用程序通过注册Firebase通知收到的注册令牌匹配。不要截断或添加其他字符 这是当您尝试发送一个简单的cURL请求时的响应,其中注册令牌是随机生成的:Node.js 如何在服务器上验证FCM注册令牌?,node.js,firebase,firebase-cloud-messaging,Node.js,Firebase,Firebase Cloud Messaging,我获得了用于web推送的Firebase云消息注册令牌。 我把它发送到我的服务器,保存在数据库中,以便以后推送。 但我如何验证此令牌是否有效 我已经尝试过了,但我认为这是用于身份验证令牌的,而不是用于web推送 其他人可以向我的服务器发送随机伪造令牌的请求。我想在保存到数据库之前防止这种情况 编辑:问题解决了,我编写了一个简单的类来快速使用FCM进行web推送。 发送到无效注册令牌时,您将收到: 检查传递给服务器的注册令牌的格式。确保它与客户端应用程序通过注册Firebase通知收到的注册令牌匹
curl --header "Authorization: key=$[your_server_key_here]" \
--header Content-Type:"application/json" \
https://fcm.googleapis.com/fcm/send \
-d "{\"registration_ids\":[\"ABC\"]}"
请注意,我在注册ID
参数中添加了“ABC”
。如果它是一个有效的注册令牌,但与您的项目没有关联,您可能会收到
您可以尝试使用以下参数从服务器发送测试消息以查看响应,而无需向设备发送实际消息:
此参数设置为true时,允许开发人员在不实际发送消息的情况下测试请求
一种方法是发送带有
dry_run
选项=true的消息,如AL.在另一个答案中所述
另一种方法是使用InstanceId服务器API:根据文档,您可以使用
validate\u
测试请求,而不实际传递消息
如果任何人使用firebase管理SDKfornode.js,则无需显式使用
服务器密钥手动发送请求Admin SDK提供发送dry_run
push消息以验证fcm_令牌
function verifyFCMToken (fcmToken) => {
return admin.messaging().send({
token: fcmToken
}, true)
}
使用如下方法
verifyFCMToken("YOUR_FCM_TOKEN_HERE")
.then(result => {
// YOUR TOKEN IS VALID
})
.catch(err => {
// YOUR TOKEN IS INVALID
})