当我的后端服务器向 GCM 服务器发送 post 请求时,我收到授权错误 HTTP 401。
我按照此处描述的步骤进行操作:
http://developer.android.com/google/gcm/http.html#auth_error http://developer.android.com/google/gcm/http.html#auth_error
>> api_key=AIzaSyDEy3...
>> curl --header "Authorization: key=$api_key" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "{\"registration_id\":\"ABC\"}"
我明白了:
<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
在故障排除中它说:
Authentication Error
The sender account that you're trying to use to send a message couldn't be authenticated. Possible causes are:
1. Authorization header missing or with invalid syntax.
2. Invalid project number sent as key.
3. Key valid but with GCM service disabled.
4. Request originated from a server not whitelisted in the Server Key IPs.
我对此有疑问:
- 卷曲请求中的标头是否正确?
- 它们的意思是“api_key”(AIzaSy...)还是项目编号,如 8305134...?
- 如何将我的服务器密钥 IP 列入白名单?
- 如果我运行curl命令,我是否必须将计算机的IP地址列入白名单?
它们的意思是“api_key”(AIzaSy...)还是项目编号,如 8305134...?
这意味着应添加到您的curl 脚本中的服务器密钥。项目号不应该用于在服务器端发送消息。
要创建新的服务器密钥,请按照以下步骤操作:
- Go to https://cloud.google.com/console/project https://cloud.google.com/console/project
- 单击您的项目
- Go to API 和授权在左侧面板上
- 在左侧面板的子菜单中选择凭据
- Under 公共API访问, 点击 ”创建新密钥"
- 选择“服务器”
- 在下一个对话框中,指定列入白名单的 IP(如果有)。留空,请求将来自任何 IP
- Click Create.
- 您会发现新的服务器密钥是在“”下创建的公共API访问"
该密钥用于在服务器端的脚本中发送消息。
如何将我的服务器密钥 IP 列入白名单?
您可以在创建服务器密钥时将其列入白名单。
如果我运行curl命令,我是否必须将计算机的IP地址列入白名单?
出于测试目的,您不必指定 IP。出于商业目的,您可能需要这样做。
Warning将 IP 设置为0.0.0.0/0如中提到的入门指南将允许所有 IPv4 地址,但不允许 IPv6。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)