OAuth2游乐场的Firebase承载令牌

时间:2018-11-20 13:08:45

标签: firebase oauth-2.0 firebase-cloud-messaging

我正在尝试测试使用Firebase使用邮递员进行推送通知的应用程序。

我正在专门测试 Http v1 Api ,并研究如何authorize the request

我需要做的就是让OAuth2令牌在邮递员中使用,尽管不确定如何,我应该能够在OAuth 2.0 playground上使用它。

我有从Firebase控制台下载的privatkey.json文件,我只需要知道如何使用它来获取将添加为POST请求的承载授权标头的令牌 >

2 个答案:

答案 0 :(得分:4)

我能够通过在OAuth2 playground中请求以下范围来通过FCM v1 HTTP API发送消息:

email, https://www.googleapis.com/auth/firebase.messaging

Specifying scopes in OAuth2 platground

对此进行授权后,我将授权代码交换为刷新和访问令牌。

Exchanging authorization code for tokens

然后我将生成的访问令牌传递给了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请求中,将以下占位符替换为您的相关值:


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项目,该令牌解决了我的上述问题。它不像只使用邮递员(在我看来这是不可能的)那样轻巧,但是它可以正常工作,因为访问令牌的生存时间约为一个小时。