GCM HTTP错误401:未经授权

3
我已经在客户端集成了GCM并制作了其服务器端组件。一切都正常工作,我能够从服务器向所有注册的客户端发送推送通知。我正在使用Google App Engine作为我的服务器。
问题出现在以下情况下: 1. 我更改了服务器上的API密钥。 - 之前,我使用我的个人Gmail帐户获取API密钥,并且所有其他访问都通过我的帐户进行。就在将应用程序推向生产环境之前,我将服务器移动到了生产帐户,并根据生产ID更改了ID。通过ID,我的意思是API密钥、项目ID、生产密钥库等。现在的问题是,当我想要从服务器发送推送通知时,我会收到URL异常“HTTP错误401:未经授权”。 - 我尝试了: - 删除我的旧ID。 - 删除旧公共API访问密钥。 - 如果我尝试从旧服务器发送推送通知,则相同的代码可以正常工作。
这是否与项目包名称和API密钥有关...一旦注册,就只能使用...如果是,如何在不更改客户端项目包名称的情况下删除它。请帮助我们,我们不能继续使用旧服务器。

这是帮助我解决问题的答案: https://dev59.com/nWcs5IYBdhLWcg3wu2Yp - zeusstl
4个回答

0

由于这是一个旧问题,从未得到答复,但仍然受到关注,我在此发帖说明此问题可能已经过时,因为云控制台自那时以来已经经历了几次迭代。

此外,Google Cloud Messaging已被Firebase Cloud Messaging取代。新项目应使用FCM,并鼓励现有项目升级以从新功能中受益。

Firebase Cloud Messaging
https://firebase.google.com/docs/cloud-messaging/


0
请检查新服务器上5228-5230端口(GCM端口)是否开放。这可能是问题所在。

0
问题可能是因为您同时在新服务器上使用旧服务器 API 密钥。要从服务器端发送推送通知,您需要使用使用服务器公共 IP 地址生成的 API 密钥。

我曾经在旧服务器上使用Android密钥作为API密钥,现在在新服务器上使用新的Android密钥。但仍然无法正常工作。 - Ali Ashraf
Google API控制台已经发生了很大的变化。现在你需要创建服务器密钥,而不是提供Android API密钥,通过提供服务器公共IP地址来从服务器发送推送通知。 - Eldhose M Babu
1
如果我将我的服务器托管在Google App Engine上,云上呢? - Ali Ashraf

0
如果是测试目的,请确保您在Google控制台上的服务器API密钥中包含白名单中相关的IP地址: 0.0.0.0/0 ::/0
这些是用于IPv4和IPv6 IP地址的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接