2016-07-22 139 views
1

为什么谷歌的GCM (Google Cloud Messaging)服务突然返回401请求发送Android推送通知有什么原因?调用看起来像这样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> 

UPDATE:

谷歌的名字四种可能causes for this error

  • Authorization头丢失或在HTTP请求无效的语法。
  • 无效的项目号码作为密钥发送
  • 密钥有效,但禁用了GCM服务。
  • 源自服务器密钥IP中未列入白名单的服务器的请求。

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

+0

API密钥已更改/删除?也可以添加一些显示请求的代码。 – COBB

+0

我们不小心删除了该帐户并稍后恢复了该帐户,这是否会使标记无效? :-/ 不确定。 – 0x4a6f4672

+0

也许尝试为GCM服务启用的项目创建新的服务器API密钥。 – COBB

回答

2

不确定为什么发送推送通知使用Android密钥停止工作,因为它曾经工作过。我设法通过使用服务器密钥而不是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?

我发现一个网站,说:“谷歌做出了改变,从对GCM/FCM工作出于安全原因停止的Android按键” https://groups.google.com/forum/#!msg/firebase-talk/4lCPr-UIuY0/ShWZk6z2AAAJ

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

1

看起来你没有使用开发人员控制台的服务器密钥为您的应用程序。

相关问题