Android GCM(谷歌云消息)突然返回401
谷歌的服务突然返回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
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密钥。