android - GCM(Google Cloud Messaging)突然返回401

标签 android push-notification google-cloud-messaging

<分区>

GCM (Google Cloud Messaging) 有什么原因吗?来自 Google 的服务突然返回 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 请求中缺少授权 header 或语法无效。
  • 作为 key 发送的项目编号无效
  • key 有效但 GCM 服务已禁用。
  • 请求来自未列入服务器 key IP 白名单的服务器。

我检查了有问题的 API key 的有效性 here , 似乎无效。问题是为什么?到目前为止它曾经工作过。啊。 :-/

最佳答案

不确定为什么使用 Android Key 发送推送通知停止工作,因为它以前可以工作。我设法使用 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

所以答案似乎是使用“Server Key”来发送 Android GCM 消息(而不是“Android Key”)。

关于android - GCM(Google Cloud Messaging)突然返回401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38525909/

相关文章:

ios - WhatsApp如何绕过APNS限制以显示设备离线时收到的多个推送消息?

javascript - 有没有办法打开mailto : and tel: links from a service worker?

Android GCM 注册 ID 一小时后过期

android - 如何使用 FCM 向特定用户发送通知?

android - AlertDialog ONClickListener 不工作

android - eclipse 中从右到左的语言(波斯语)

android - 如何在创建后更新使用 AlertDialog.builder 构建的 AlertDialog 列表中的项目数组

iOS - 通过本地推送通知触发通知服务扩展?

google-cloud-messaging - 一台设备到另一台设备的 Android GCM 消息

android - 使用 AlarmManager 手动更新小部件