获取通知密钥错误 401 gcm https://android.googleapis.com/gcm/googlenotification

Posted

技术标签:

【中文标题】获取通知密钥错误 401 gcm https://android.googleapis.com/gcm/googlenotification【英文标题】:get notification key error 401 gcm https://android.googleapis.com/gcm/googlenotification 【发布时间】:2015-03-03 15:13:14 【问题描述】:

我正在尝试从 google 服务获取通知密钥,我遵循 http://developer.android.com/google/gcm/notifications.html 的文档并在客户端上生成通知密钥,但我在发布请求时遇到问题,得到错误 401 OK


   "operation": "create",
   "notification_key_name": "vitee",
   "registration_ids": ["********"]
   "id_token": "**************************************************"

这是我的请求的快照

![在此处输入图片描述][1]

https://lh5.googleusercontent.com/QmTDFWwjkyPtLFVVcTN4IYwkVhHU42wcUKPjpg_E8KSR3ALAXJ2Js-0K2gzlmmOEUXfrGe1TS8s=w1890-h820

【问题讨论】:

还要确保您已在开发者控制台中激活 GCM API。 我遇到了同样的错误,你解决了吗?我也在尝试在客户端中获取通知密钥。 看起来 notification_key_name 需要是获取您的 id_token 的用户的电子邮件,请参阅this answer。 Google Cloud Messaging (GCM) with local device groups on Android gives HTTP Error code 401的可能重复 【参考方案1】:

projectid 的标头被错误标记,并且使用项目编号而不是 API 密钥作为值。

所以,

    project_id改成Authorization作为名字 作为值key=YOUR_PROJECT_API_KEY,可以在凭据页面上找到:

以下是通过凭据页面查找 api 密钥的一些帮助:

    https://console.developers.google.com/project?authuser=0 点击你想要的项目(如果你有多个) 点击API & auth(如果尚未展开) 点击凭据(在 API & auth 下方) 然后您会在此屏幕上找到您的 API 密钥

【讨论】:

我将 project_id 更改为授权,并输入 MY_PROJECT_API_KEY 作为值,但我收到错误 400 OK。根据您的声明,您正在尝试在服务器上生成通知密钥,但是,我正在尝试在客户端上生成通知密钥。看看这个 - developer.android.com/google/gcm/notifications.html【参考方案2】:

如果您在客户端上创建用户通知,则不能使用“创建”操作。改用“添加”。如文档中所述,“添加”会在通知键不存在时创建它。

在生成 id_token 时,请确保在 scope 对象中指定客户端 ID(不是 API 密钥)。

【讨论】:

我们得到了 id_token 但是当我们把它传入 我们得到了 id_token 但是当我们将它传递成 JSON 格式来调用谷歌服务器 "operation": "add", "notification_key_name":"a", "registration_ids":[" *"] "id_token":"" 我没有收到通知密钥,收到 401 OK 错误

以上是关于获取通知密钥错误 401 gcm https://android.googleapis.com/gcm/googlenotification的主要内容,如果未能解决你的问题,请参考以下文章

GCM 的 API 密钥突然失效?未经授权的 (401) 错误

在 ASP.NET 中为 manifest.json GCM 推送通知获取未经授权的 401

反应本机推送通知,GCM 服务器返回 401

Google GCM 服务器返回未经授权的错误 401

GCM 服务器端 PHP - 未经授权的 401 错误

在 GCM 中发送推送通知时出现未经授权的错误