Google 的 Firebase 下游消息的 http post 请求的“授权”部分是什么?

What is the `Authorization` part of the http post request of Google's Firebase Downstream message?

我想尝试使用 google 的 FCM 消息服务发送消息,如文档所述,http 请求应该是这样的:

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}

我的问题是我不知道 Authorization 的值应该是什么,当我删除这个 header 并发出请求时,我得到错误 401:Unauthorized。我想这一定是某种 api 键或其他东西,但我在我的项目中找不到它。谁能帮帮我?

PS:出于测试目的,我目前正在使用 this site 向我的设备发送消息

根据 About Firebase Cloud Messaging Server 文档:

Authentication

To send a message, the app server issues a POST request. For example:

https://fcm.googleapis.com/fcm/send

A message request consists of two parts: the HTTP header and the HTTP body.

The HTTP header must contain the following headers:

  • Authorization: key=YOUR_SERVER_KEY

确保这是 server 键,其值在您的 Firebase 项目控制台中的 Project Settings > 云消息。 FCM 拒绝客户端密钥或任何其他密钥。

  • Content-Type: application/json for JSON; application/x-www-form-urlencoded;charset=UTF-8 for plain text.

     If Content-Type is omitted, the format is assumed to be plain text.
    

更新(2016/11/16)

也许您应该考虑使用 FCM 令牌而不是服务器密钥作为以下屏幕截图中的注释


更新(2016/12/08)

Firebase 已将服务器密钥升级到新版本,建议您升级到最新版本。请看下面的截图:

我也遇到过这个错误。问题出在服务器密钥上。不要使用 google-services.json 文件中的 api 键。

您应该使用您的 firebase 控制台项目中的服务器 api 密钥,在云消息选项卡项目密钥中:https://console.firebase.google.com/project/firebase-probiz/settings/cloudmessaging

这是您的服务器密钥,您可以在 console.developers.google.com 或项目设置 > 云消息传递下的 Firebase 项目控制台中观察到它。请注意它由 Google 服务自动创建的密钥。您应该添加 IP 地址 inco G.Console 以限制使用。

另外请记住内容类型:application/json,否则您将得到 Error=MissingRegistration。