【问题标题】:Firebase bearer token from OAuth2 playground来自 OAuth2 游乐场的 Firebase 不记名令牌
【发布时间】:2019-04-22 22:32:45
【问题描述】:

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

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

我需要做的是让 OAuth2 令牌在 Postman 中使用,我应该可以在 OAuth 2.0 playground 上执行此操作,尽管我不确定如何操作。

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

【问题讨论】:

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


    【解决方案1】:

    我创建了一个小型project on hithub,其中包括邮递员集合和环境以及使用下载的service-key.json 生成访问令牌的nodejs 项目,从而解决了我的上述问题。它不像只使用邮递员那样优雅(在我看来这似乎是不可能的),但它工作得很好,因为访问令牌可以存活大约一个小时。

    【讨论】:

      【解决方案2】:

      通过在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 请求中,将以下占位符替换为您的相关值:


      FCM documentation on authenticating FCM v1 requests 可能会令人困惑,因为它只调用 OAuth2 令牌。它实际上首先通过调用new google.auth.JWT(...) 生成一个自签名的JWT(JSON Web Token)。这包括下载私钥,并通过 JWT 库在本地生成 JWT。

      然后将自签名的 JWT 传递给 jwtClient.authorize(...),它会返回包括 access_token 在内的令牌。后者是一个 OAuth2 访问令牌,类似于我们上面得到的那个。

      【讨论】:

      • 这是否意味着如果有人能够检索已注册的设备 ID 和我的项目 ID,他们可以使用 OAuth2 操场绕过将存在于生产环境中的 service-key.json 文件发送消息?
      • 我基于访问其他功能的期望是,上述流程仅适用于 Firebase 项目的成员。
      猜你喜欢
      • 2022-08-15
      • 1970-01-01
      • 2013-04-10
      • 1970-01-01
      • 2018-06-01
      • 2018-05-06
      • 2020-04-13
      • 2015-02-22
      • 1970-01-01
      相关资源
      最近更新 更多