【问题标题】:What is the `Authorization` part of the http post request of Google's Firebase Downstream message?Google 的 Firebase 下游消息的 http post 请求的“授权”部分是什么?
【发布时间】:2016-10-06 23:49:13
【问题描述】:

我想尝试使用谷歌的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 的值应该是什么,当我删除此标头并发出请求时,我收到错误 401:Unauthorized。我认为这一定是某种 api 密钥或其他东西但我在我的项目中找不到它。谁能帮帮我?

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

【问题讨论】:

    标签: android push-notification firebase google-cloud-messaging firebase-cloud-messaging


    【解决方案1】:

    根据About Firebase Cloud Messaging Server 文档:

    身份验证

    为了发送消息,应用服务器发出一个 POST 请求。例如:

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

    一个消息请求由两部分组成:HTTP 头和 HTTP 身体。

    HTTP 标头必须包含以下标头:

    • 授权:key=YOUR_SERVER_KEY

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

    • 内容类型:application/json 用于 JSON; application/x-www-form-urlencoded;charset=UTF-8 用于纯文本。

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

    更新 (2016/11/16)

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


    更新 (2016/12/08)

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

    【讨论】:

    • 非常感谢。我认为文档组织得不好,但再次感谢您的回答
    • 嘿@BNK 你介意发布示例 curl 或 httpie 代码吗?我似乎无法获得授权工作。谢谢!
    • @FredLoh 在我的回答中的 Google 链接中,在“检查服务器密钥的有效性”中,您会发现 curl 示例
    • 我收到 HTTP/1.1 400 Bad Request 我的帖子是 fcm.googleapis.com/fcm/send Content-Type:application/json Authorization:key=GduFdg......wK8B4Uwk2xxx.. . { "data": { "message": "post message", "version" : "2.0: }, "to" : "fasdsadasdsadasj9N40:APA91b ....5nX--HG.....7wyTCN" } 什么错了吗?
    • @SagarPatil 你得到了 400,而不是 401 作为 OP,所以仅供参考 firebase.google.com/docs/cloud-messaging/…
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      另外记得 Content-Type: application/json,否则你会得到 Error=MissingRegistration。

      【讨论】:

        猜你喜欢
        • 2015-03-08
        • 2021-04-26
        • 2017-12-26
        • 2020-08-17
        • 2011-01-19
        • 1970-01-01
        • 2013-06-02
        • 1970-01-01
        相关资源
        最近更新 更多