【问题标题】:How to Troubleshoot Android GCM 401 error?如何解决 Android GCM 401 错误?
【发布时间】:2014-04-08 11:17:24
【问题描述】:

我在尝试连接到 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 的请求),行为仍然相同,有时它有效,有时它不t

我检查过的一些参考资料:

非常感谢任何关于可能发生的事情的建议。

【问题讨论】:

    标签: authentication google-api google-cloud-messaging


    【解决方案1】:

    经过多次检查并没有找到好的结果,我们可以给出的唯一解决方案是使用新的 API 密钥创建一个新项目(第三个,因为我们之前已经做过) ,这第三次成功了。

    【讨论】:

    • 我们遇到了一个非常相似的问题。你有没有找到任何其他信息?
    • @JakeBraun 不,在创建新的 API 密钥并尝试第一次工作后,我们停止寻找......
    • 对我来说也一样。奇怪
    • 祝你好运@valeriocomo 我们真的找不到问题的根本原因
    【解决方案2】:

    可能会出现使用 IPv6 进行连接而只允许使用 IPv4 的情况。 确保您拥有“允许的任何 IP”,而不仅仅是 IPv4 0.0.0.0/0。

    【讨论】:

    • 我们没有成功:(
    • 要设置“允许任何 IP”,请将“IPS”字段留空。
    【解决方案3】:

    我通过在同一个项目下创建新的 API Key 解决了我的问题。跟着这个

    转到 Google 开发者控制台,然后选择项目 Credentials -> Create Credentials -> API Key -> Server Key 然后添加您的服务器 IP 地址,您的 GCM 服务器代码托管。

    创建 Api 密钥后可能需要 5 分钟才能生效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 2021-10-15
      • 2020-09-16
      • 2013-12-29
      • 1970-01-01
      • 2019-05-12
      • 2020-01-24
      相关资源
      最近更新 更多