间歇性401未经Google GCM授权

Jak*_*aun 22 android unauthorized http-status-code-401 google-cloud-messaging

我们正在从Google的GCM服务中获得间歇性的401未经授权的错误.在过去,它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"}]}
Run Code Online (Sandbox Code Playgroud)

但是,有时我们得到这样的回应:

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>
Run Code Online (Sandbox Code Playgroud)

次要更新(2014年4月4日)

将设置更改为"允许任何IP"可以解决问题,但更改为任何其他IP地址会再次破坏它.

Jij*_*dan 0

通过将 IP 地址字段保留为空白来重新生成服务器密钥解决了该问题。