尝试连接到Google Cloud Message Server时,我遇到了很多401
未经授权的错误。
我们的代码在我们的测试服务器上运行了一段时间,但在生产的代码上它有时会失败。
API密钥工作正常,推送通知到达(最终),但同时我收到很多401
错误。
我已在控制台上验证服务器IP地址位于白名单:
关注Google Troublesooting guide后,我得到了惊人的结果:
me@myserver:~$ :curl --header "Authorization: key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFFU" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"ABC\"]}"
<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
me@myserver:~$ curl --header "Authorization: key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFFU" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"ABC\"]}"
{"multicast_id":7560936933053964665,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
me@myserver:~$ curl --header "Authorization: key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFFU" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"ABC\"]}"
<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
有时,相同的curl
命令有效,有时它也没有任何改变,也没有在控制台或命令行中......有时候它有效,我认为关键是没关系(我是双重检查密钥和允许的IP数次)。
我已经检查了所有stackoverflow问题并测试了所有建议,但即使从白名单中删除所有IP(以允许来自任何IP的请求),行为仍然是相同的,有时它会工作很多次它没有'吨
我检查了一些参考文献:
对于可能发生的事情的任何建议都将非常感激。
答案 0 :(得分:4)
经过多次检查而未找到好结果后,我们可以提供的唯一解决方案是使用新API密钥创建新项目(第3个,因为我们之前已经做过) ,这是第三次有效。
答案 1 :(得分:2)
我通过在同一项目下创建新的 API密钥解决了我的问题。在此之后
转到Google开发者控制台,然后选择项目凭据 - &gt;创建凭证 - &gt; API密钥 - &gt;服务器密钥然后添加您的GCM服务器代码托管的服务器IP地址。
创建Api密钥后,可能需要5分钟才能使用
答案 2 :(得分:0)
可能会发生IPv6用于连接,而只允许使用IPv4。 确保您拥有&#39;允许任何知识产权&#39;不只是IPv4 0.0.0.0/0。