【发布时间】:2014-05-13 20:26:44
【问题描述】:
我们从 Google 的 GCM 服务中收到间歇性的 401 Unauthorized 错误。在过去,它 100% 的时间都有效。该问题可能与我们的路由器接受 IPv6 流量同时发生,但即使我们在适配器上禁用 IPv6,问题仍然存在。它也不适用于单独的仅 IPv4 网络。我们还使用 Google 推荐的指数退避 (http://developer.android.com/google/gcm/adv.html#retry) 重试我们的请求,因此问题可能会随着时间的推移而发展,而我们可能没有注意到。
我们测试过的所有生产 IPv4 和 IPv6 地址都列在我们的项目中: https://console.developers.google.com
这是我们的密钥的样子,我们列出了整个可公开访问的子网以供测试,但我也尝试过仅使用单个 IP 地址。
有时它会起作用:
C:\Users\Administrator>curl --header "Authorization: key=REDACTED" --header Content-Type:"application/json" https://android.googl
eapis.com/gcm/send -d "{\"registration_ids\":[\"test\"],\"data\":{\"code\":123}
}" -k
{"multicast_id":REDACTED,"success":0,"failure":1,"canonical_ids":0,"r
esults":[{"error":"InvalidRegistration"}]}
但是,有时我们会收到这样的回复:
C:\Users\Administrator>curl --header "Authorization: key=REDACTED" --header Content-Type:"application/json" https://android.googl
eapis.com/gcm/send -d "{\"registration_ids\":[\"test\"],\"data\":{\"code\":123}
}" -k
<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
小更新(2014 年 4 月 10 日)
将设置更改为“允许的任何 IP”可解决问题,但更改为任何其他 IP 地址或地址会再次出现问题。
【问题讨论】:
-
在这里遇到同样的问题,但将设置更改为“允许任何 IP”并不能解决问题。
-
我投票结束这个问题,因为它是一个服务可靠性问题。
-
我认为它完全符合指南作为关于“程序员常用的软件工具”或“软件开发特有的实用、可回答问题”的问题,因为 GCM 服务被大多数安卓应用。我发现我现在没有明确的问题,但我认为这暗示我在询问是否有其他具有类似设置的人遇到过这个问题以及他们是如何解决这个问题的。通过设置更改或指数退避等程序化解决方案。
标签: android google-cloud-messaging http-status-code-401 unauthorized