2014-03-06 112 views
14

我收到很多401未授权尝试连接到Google Cloud Message Server时发生错误。如何解决Android GCM 401错误?

我们的代码在我们的测试服务器上工作了一段时间,但在生产过程中它有时会失败。

API键工作正常,推送通知到达(最终),但同时我得到了很多401错误。

我验证过服务器IP地址白名单在控制台上:

以下Google Troublesooting guide的时候,我得到令人惊讶的结果:

[email protected]:~$ :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> 
[email protected]:~$ 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"}]} 
[email protected]:~$ 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的请求)行为仍然是相同的,某些时候它有时会工作“T

一些参考我检查:

什么可怎么回事任何意见将非常感激。

回答

4

许多检查和没有找到一个很好的结果后,我们可以给唯一的解决方案是创建一个新项目新的API密钥(3号之一,因为我们之前已经做了它),而这第3次有用。

+1

我们遇到了非常类似的问题。你有没有找到任何其他信息? –

+1

@JakeBraun不,在创建一个新的API密钥并尝试了它的工作时间后,我们停止了查找... – pconcepcion

+1

这对我来说也是一样。奇怪 – valeriocomo

0

可能发生IPv6仅用于连接,而仅允许使用IPv4。 确保你有'任何IP允许'不只是IPv4 0.0.0.0/0。

+0

我们这样做没有成功:( – pconcepcion

+0

)要设置'允许任何IP',请将'IPS'字段留空。 – hBrent

2

我已通过在同一项目下创建新的API密钥解决了我的问题。在此之后

去谷歌开发者控制台,然后选择项目凭据 - >创建凭据 - > API密钥 - >服务器密钥然后添加在您的GCM服务器代码托管你的服务器IP地址。

创建Api键后,可能需要5分钟才能工作