我关注 this来自谷歌的指南,为安卓(GCM)设置推送通知服务。但实际上有点不对,因为没有Register app按钮,我认为它被替换为滑动条中的credentials,然后我按create new key 按钮,选择 Android 然后在 eclipse 中找到 SHA1 key (我尝试使用控制台,在/home/.android/debug.keystore 中,有奇怪的事情,它要求输入一些密码,我只是按回车键),然后我添加';com.google.android.gcm.demo.app' - 我在 list 中的应用程序包(它实际上是来自 http://developer.android.com/google/gcm/client.html 的工作示例)它工作得很好,当我输入我的发件人 ID(来自谷歌云控制台的项目编号)。
现在我要为此编写后端:
- 我执行请求并在我的服务器上获得“未授权”状态代码(我建议跳过细节,这实际上无关紧要)。
- 然后我试着 curl 它,因为它是在谷歌故障排除指南中写的:http://developer.android.com/google/gcm/http.html#auth_error . 我得到了带有 html 标签的响应,未经授权的 401。
我该如何解决这个问题?
注意:我想我生成 key 的方式是错误的,因为指南中的这种不匹配。
最佳答案
我找到了解决方案,我应该在滑动条中打开凭据 -> 创建新 key - SERVER(而不是 Android)然后不写任何 IP,这足以用于开发目的。然后这个 api key 将从服务器有效。
api_key=YOUR_API_KEY
curl --header "Authorization: key=$api_key" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_ids\":[\"ABC\"]}"
响应:
{"multicast_id":6782339717028231855,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
然后只需输入有效的注册 ID,如下所示: http://developer.android.com/google/gcm/http.html#auth_error
最好在这里更改 android 指南:http://developer.android.com/google/gcm/gs.html因为它不是最新的。
关于android - 未经授权,安卓推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21014935/