这个问题在这里已有答案:
是否有任何理由为什么来自Google的GCM (Google Cloud Messaging)服务突然返回401以发送Android推送通知的请求?电话看起来像这样
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>
更新:
谷歌有四个可能的名字causes for this error:
-
缺少授权标头或HTTP请求中的语法无效 .
-
作为密钥发送的项目编号无效
-
密钥有效但GCM服务已禁用 .
-
请求源自服务器密钥IP中未列入白名单的服务器 .
我检查了问题here中的API密钥的有效性,它似乎无效 . 问题是为什么?到目前为止它曾经工作过 . 哎呀 . : - /
2 回答
不知道为什么发送推送通知使用 Android Key 停止工作,因为它以前曾经工作过 . 我设法通过使用 Server key 而不是 Android key 向Android应用发送推送通知,如下所示:
显然这对于Android来说似乎是正确的方法:Why Android key (api key) is invalid or that key is deprecated by GCM server?
我发现了一个网站,上面写着"Google made a change that stopped Android Keys from working for GCM/FCM for security reasons" https://groups.google.com/forum/#!msg/firebase-talk/4lCPr-UIuY0/ShWZk6z2AAAJ
所以答案似乎是使用“服务器密钥”发送Android GCM消息(而不是“Android密钥”) .
您似乎没有使用开发人员控制台中的服务器密钥来处理您的应用程序 .