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

时间:2016-06-07 07:35:36

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

我想尝试使用谷歌的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向设备发送消息

3 个答案:

答案 0 :(得分:27)

根据About Firebase Cloud Messaging Server文件:

  

验证

     

要发送消息,应用服务器会发出POST请求。例如:

     

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

     

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

     

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

     
      
  • 授权:key = YOUR_SERVER_KEY

         

    确保这是服务器键,其值在项目设置>下的Firebase项目控制台中可用。 云消息传递。 FCM拒绝客户密钥或任何其他密钥。

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

         

    如果省略Content-Type,则假定格式为纯文本。

  •   

希望它有所帮助!

更新(2016/11/16)

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

enter image description here

更新(2016/12/08)

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

enter image description here

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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