GCM(谷歌云消息传递)突然返回401

时间:2016-07-22 12:00:25

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

为了发送Android推送通知的请求,Google的GCM (Google Cloud Messaging)服务突然返回401是否有任何理由?这个电话看起来像这个

curl --header "Authorization: key=<my_android_key>" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"to\":\"/topics/my_topic\", \"data\":{\"category\":\"help\", \"title\":\"Test\", \"text\":\"Test\", \"param\":\"\"}}"

结果是

<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

更新:

Google将四个causes for this error命名为

  • 缺少授权标头或HTTP请求中的语法无效。
  • 作为密钥发送的项目编号无效
  • 密钥有效但GCM服务已停用。
  • 请求来自服务器密钥IP中未列入白名单的服务器。

我检查了问题here中API密钥的有效性,似乎无效。问题是为什么?到目前为止它曾经工作过。哎呀。 : - /

2 个答案:

答案 0 :(得分:2)

不确定为什么使用 Android Key 发送推送通知已停止工作,因为之前曾使用过。我设法使用服务器密钥而不是 Android密钥向Android应用发送推送通知:

curl --header "Authorization: key=<my_server_key>" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"to\":\"/topics/my_topic\", \"data\":{\"category\":\"help\", \"title\":\"Test\", \"text\":\"Test\", \"param\":\"\"}}"

显然,对于Android来说,这似乎是正确的方法: Why Android key (api key) is invalid or that key is deprecated by GCM server?

我找到了一个网站,上面写着“由于安全原因,Google进行了一项更改,阻止了Android Keys为GCM / FCM工作” https://groups.google.com/forum/#!msg/firebase-talk/4lCPr-UIuY0/ShWZk6z2AAAJ

所以答案似乎是使用“服务器密钥”发送Android GCM消息(而不是“Android密钥”)。

答案 1 :(得分:1)

您似乎没有使用开发人员控制台中的服务器密钥来处理您的应用程序。