Emr*_*nce 7 node.js firebase firebase-cloud-messaging
我获得了用于Web推送的Firebase Cloud Messaging注册令牌。然后,我将此邮件发送到服务器以保存在数据库中,以供以后推送。但是,如何验证此令牌有效或伪造?
我已经尝试过了,但是我认为这是针对Auth令牌而不是针对Web推送的。
其他人可以将随机伪造令牌的请求发送到我的服务器。我想防止这种情况,然后再保存到数据库中。
编辑:解决了,我写了一个简单的类来使用FCM快速进行Web推送。 https://github.com/emretekince/fcm-web-push
发送到无效的注册令牌时,您将收到200 +错误:InvalidRegistration:
检查传递给服务器的注册令牌的格式。确保它与客户端应用程序通过Firebase Notifications注册收到的注册令牌匹配。不要截断或添加其他字符。
当您尝试发送简单的cURL请求(其中注册令牌只是随机生成)时,这是响应:
curl --header "Authorization: key=$[your_server_key_here]" \
--header Content-Type:"application/json" \
https://fcm.googleapis.com/fcm/send \
-d "{\"registration_ids\":[\"ABC\"]}"
Run Code Online (Sandbox Code Playgroud)
注意,我"ABC"在registration_ids参数中添加了。如果它是有效的注册令牌,但未与您的项目关联,则可能会收到200 + error:NotRegistered。
您可以尝试通过使用dry_run参数从服务器发送测试消息以查看响应,而无需向设备发送实际消息:
将此参数设置为true时,允许开发人员测试请求而无需实际发送消息。
根据文档,您可以用于validate_only测试请求,而无需实际传递消息。
https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages/send
一种方法是发送带有dry_run选项 = true的消息,如 AL 所述。在另一个答案中。
另一种方法是使用 InstanceId 服务器 API:https :
//developers.google.com/instance-id/reference/server
如果有人使用 firebase Admin SDK for node.js,则无需使用server_key显式手动发送请求。Admin SDK提供发送dry_run推送消息来验证fcm_token.
function verifyFCMToken (fcmToken) => {
return admin.messaging().send({
token: fcmToken
}, true)
}
Run Code Online (Sandbox Code Playgroud)
使用此方法如下
verifyFCMToken("YOUR_FCM_TOKEN_HERE")
.then(result => {
// YOUR TOKEN IS VALID
})
.catch(err => {
// YOUR TOKEN IS INVALID
})
Run Code Online (Sandbox Code Playgroud)
您可以使用以下功能
function verifyFCMToken (fcmToken) => {
return admin.messaging().send({
token: fcmToken
}, true)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8459 次 |
| 最近记录: |