我正在尝试测试使用Firebase使用邮递员进行推送通知的应用程序。
我正在专门测试 Http v1 Api ,并研究如何authorize the request。
我需要做的就是让OAuth2令牌在邮递员中使用,尽管不确定如何,我应该能够在OAuth 2.0 playground上使用它。
我有从Firebase控制台下载的privatkey.json
文件,我只需要知道如何使用它来获取将添加为POST请求的承载授权标头的令牌 >
答案 0 :(得分:4)
我能够通过在OAuth2 playground中请求以下范围来通过FCM v1 HTTP API发送消息:
email, https://www.googleapis.com/auth/firebase.messaging
对此进行授权后,我将授权代码交换为刷新和访问令牌。
然后我将生成的访问令牌传递给了FCM通话:
curl -X POST -H "Authorization: Bearer MY_ACCESS_TOKEN" -H "Content-Type: application/json" -d '{"message":{
"notification": {
"title": "FCM Message",
"body": "This is an FCM Message",
},
"token": "MY_DEVICE_TOKEN"
}
}' https://fcm.googleapis.com/v1/projects/MY_PROJECT_ID/messages:send
在上述CURL请求中,将以下占位符替换为您的相关值:
MY_PROJECT_ID
是Firebase项目ID,您可以从project settings page in the Firebase console MY_DEVICE_TOKEN
是您要将消息发送到的设备的注册令牌。对于网络客户端,请参见how to get the current registration token。MY_ACCESS_TOKEN
是您使用上述步骤从OAuth2游乐场获得的OAuth2访问令牌。 FCM documentation on authenticating FCM v1 requests可能令人困惑,因为它仅调用OAuth2令牌。实际上,它首先通过调用new google.auth.JWT(...)
来生成自签名JWT(JSON Web令牌)。这涉及下载私钥,并通过JWT库在本地生成JWT。
然后将自签名的JWT传递到jwtClient.authorize(...)
,后者返回包含access_token
的令牌。后者是OAuth2访问令牌,与上面获得的令牌类似。
答案 1 :(得分:1)
我创建了一个小的project on hithub,其中既包含邮递员集合又包括环境,以及使用下载的service-key.json
生成访问令牌的nodejs项目,该令牌解决了我的上述问题。它不像只使用邮递员(在我看来这是不可能的)那样轻巧,但是它可以正常工作,因为访问令牌的生存时间约为一个小时。