【问题标题】:GCM (Google Cloud Messaging) returns suddenly 401 [duplicate]GCM(Google Cloud Messaging)突然返回 401 [重复]
【发布时间】:2016-07-22 12:00:24
【问题描述】:

Google 的GCM (Google Cloud Messaging) 服务突然返回 401 请求发送 Android 推送通知有什么原因吗?调用看起来像这样

curl --header "Authorization: key=<my_android_key>" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"to\":\"/topics/my_topic\", \"data\":{\"category\":\"help\", \"title\":\"Test\", \"text\":\"Test\", \"param\":\"\"}}"

结果是

<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

更新:

Google 列出了四种可能的causes for this error

  • HTTP 请求中缺少授权标头或语法无效。
  • 作为密钥发送的项目编号无效
  • 密钥有效,但 GCM 服务已禁用。
  • 请求来自未在服务器密钥 IP 中列入白名单的服务器。

我检查了有问题的API密钥here的有效性,它似乎是无效的。问题是为什么?到目前为止它一直有效。啊。 :-/

【问题讨论】:

  • API 密钥已更改/删除?另外,也许添加一些显示请求的代码。
  • 我们不小心删除了账号,稍后又恢复了,会不会导致token失效? :-/ 不确定。
  • 也许可以尝试为启用 GCM 服务的项目创建一个新的服务器 API 密钥。
  • 只需将新的 API 密钥放入您的应用即可。

标签: android push-notification google-cloud-messaging


【解决方案1】:

不确定为什么使用 Android 密钥 发送推送通知停止工作,因为它以前可以工作。我设法通过使用 Server key 而不是 Android key 向 Android 应用发送推送通知,如下所示:

curl --header "Authorization: key=<my_server_key>" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"to\":\"/topics/my_topic\", \"data\":{\"category\":\"help\", \"title\":\"Test\", \"text\":\"Test\", \"param\":\"\"}}"

显然,这似乎是现在适用于 Android 的正确方法: Why Android key (api key) is invalid or that key is deprecated by GCM server?

我发现了一个网站,上面写着“出于安全原因,Google 做出了一项更改,阻止 Android Keys 为 GCM/FCM 工作” https://groups.google.com/forum/#!msg/firebase-talk/4lCPr-UIuY0/ShWZk6z2AAAJ

所以答案似乎是使用“服务器密钥”发送 Android GCM 消息(而不是“Android 密钥”)。

【讨论】:

    【解决方案2】:

    您的应用程序似乎没有使用开发者控制台中的服务器密钥。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多