【问题标题】:GCM HTTP Error 401: UnauthorizedGCM HTTP 错误 401:未经授权
【发布时间】:2025-12-24 11:40:11
【问题描述】:

我已经在客户端集成了 GCM,也制作了它的服务器端组件。一切正常,我能够从服务器向所有注册的客户端发送推送通知。我使用谷歌应用引擎作为我的服务器。

问题出现的时间:

  1. 我更改了服务器上的 API 密钥。
    • 之前我使用我的个人 GMail 帐户获取 API 密钥,所有其他访问都是通过我的帐户进行的。就在将应用程序上线之前,我将服务器移至生产帐户,并根据生产 ID 更改了 ID。我的意思是 API 密钥、项目 ID、生产密钥库等。现在的问题是,当我想在服务器上发送推送通知时,我收到 URL 异常“HTTP 错误 401:未经授权”

我试着做: - 删除我的旧 ID。 - 删除旧的公共 API 访问密钥。

如果我尝试从旧服务器发送推送通知,同样的代码也可以正常工作。

它是否与:项目包名称和API密钥...注册一次只能使用...如果是如何在不更改客户端项目包名称的情况下删除它。

请帮助我们无法使用旧服务器。

【问题讨论】:

标签: android google-app-engine push-notification google-plus google-cloud-messaging


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我使用 Android 密钥作为服务器 OLD 的 API 密钥,现在使用新的 Android 密钥作为新服务器。还是不行。
    • google api 控制台变化很大。您需要通过提供服务器公共 IP 地址从服务器发送推送通知来创建服务器密钥而不是 android api 密钥。
    • 如果我在云端的 Google App Engine 上托管我的服务器会怎样
    【解决方案3】:

    如果是测试目的,请确保您在 google 控制台上的服务器 API 密钥在白名单中有相关的 ip 地址: 0.0.0.0/0 ::/0

    这些用于 ipv4 和 ipv6 ips

    【讨论】:

      【解决方案4】:

      由于这是一个较老的问题,从未得到解答,但仍有人获得意见,因此我将在此处发布此问题可能已过时,因为 Cloud Console 从那时起经历了几次迭代。

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

      Firebase 云消息传递
      https://firebase.google.com/docs/cloud-messaging/

      【讨论】:

        最近更新 更多