android - 间歇性 401 未经 Google GCM 授权

标签 android google-cloud-messaging http-status-code-401 unauthorized

我们从 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

这是我们的 key 的样子,我们列出了整个可公开访问的子网以供测试,但我也尝试过仅使用单个 IP 地址。

enter image description here

有时它会起作用:

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 地址字段留空来重新生成服务器 key 解决了这个问题。

关于android - 间歇性 401 未经 Google GCM 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22813411/

相关文章:

java - 线程 "main"java.lang.NoSuchFieldError : ifpossible 中出现异常

android - android 设备连接到 WIFI 时不接收 GCM 消息

asp.net-web-api - 此请求的授权已被拒绝

android - 如何导入发件人类 - Java App Engine

Android - 用户用手指画线

android - 使用 MediaCodec 录制 Surface

java - Android Studio 虚拟设备连接到桌面 LAN 连接

javascript - 如何使用具有 htaccess 保护目录的服务 worker ?

代理授权失败的 HTTP 响应码

java - 通过可能的对话框向用户提供前台下载