Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在服务器上验证FCM注册令牌?_Node.js_Firebase_Firebase Cloud Messaging - Fatal编程技术网

Node.js 如何在服务器上验证FCM注册令牌?

Node.js 如何在服务器上验证FCM注册令牌?,node.js,firebase,firebase-cloud-messaging,Node.js,Firebase,Firebase Cloud Messaging,我获得了用于web推送的Firebase云消息注册令牌。 我把它发送到我的服务器,保存在数据库中,以便以后推送。 但我如何验证此令牌是否有效 我已经尝试过了,但我认为这是用于身份验证令牌的,而不是用于web推送 其他人可以向我的服务器发送随机伪造令牌的请求。我想在保存到数据库之前防止这种情况 编辑:问题解决了,我编写了一个简单的类来快速使用FCM进行web推送。 发送到无效注册令牌时,您将收到: 检查传递给服务器的注册令牌的格式。确保它与客户端应用程序通过注册Firebase通知收到的注册令牌匹

我获得了用于web推送的Firebase云消息注册令牌。 我把它发送到我的服务器,保存在数据库中,以便以后推送。 但我如何验证此令牌是否有效

我已经尝试过了,但我认为这是用于身份验证令牌的,而不是用于web推送

其他人可以向我的服务器发送随机伪造令牌的请求。我想在保存到数据库之前防止这种情况

编辑:问题解决了,我编写了一个简单的类来快速使用FCM进行web推送。

发送到无效注册令牌时,您将收到:

检查传递给服务器的注册令牌的格式。确保它与客户端应用程序通过注册Firebase通知收到的注册令牌匹配。不要截断或添加其他字符

这是当您尝试发送一个简单的cURL请求时的响应,其中注册令牌是随机生成的:

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
})