Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android GCM(谷歌云消息)突然返回401_Android_Push Notification_Google Cloud Messaging - Fatal编程技术网

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

Android GCM(谷歌云消息)突然返回401,android,push-notification,google-cloud-messaging,Android,Push Notification,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

谷歌的服务突然返回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\":\"\"}}"
curl--header“Authorization:key=”--header内容类型:“application/json”https://android.googleapis.com/gcm/send -d“{\”到“:\”/topics/my\u 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>

未经授权
未经授权
错误401
更新:

谷歌列举了四个可能的例子:

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

我检查了有问题的API密钥的有效性,它似乎是无效的。问题是为什么?到目前为止,它一直在工作。啊-/

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

不确定为什么使用安卓键发送推送通知停止工作,因为它以前可以工作。我通过使用服务器键而不是安卓键向安卓应用程序发送推送通知,如下所示:

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\":\"\"}}"
curl--header“Authorization:key=”--header内容类型:“application/json”https://android.googleapis.com/gcm/send -d“{\”到“:\”/topics/my\u topic\”,“data\”:{\“category\”:“help\”,“title\”:“Test\”,“text\”:“Test\”,“param\”:“}”
显然,这似乎是Android现在的正确方法:

我发现了一个网站,上面写着“出于安全原因,谷歌做出了一项改变,阻止了安卓钥匙为GCM/FCM工作。”


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

API密钥是否已更改/删除?另外,可能会添加一些显示请求的代码。我们意外地删除了帐户,并在稍后恢复了它,这会使令牌无效吗?:-/不确定。可能尝试为启用GCM服务的项目创建新的服务器API密钥。只需在应用程序中输入新的API密钥。