当我尝试进行推送(也使用curl)时,我会收到401错误(就像授权令牌错误一样)。
我阅读了许多教程,现在想不出更多的想法了。
让我尝试一下(仅使用curl):
首先,我们正在申请授权令牌:
curl.exe -v -k https://www.google.com/accounts/ClientLogin -d Email=xyz@gmail.com -d Passwd=secret -d accountType=GOOGLE -d source=your.registered.domain -d service=ac2dm
结果中您将收到授权令牌:
< HTTP/1.1 200 OK
SID=XXX
LSID=XXX
Auth=XXX
* Connection #0 to host www.google.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
请注意,Auth响应在结果中具有大写字母开头:“Auth=XXX”!
现在我们正在使用小写字母的结果进行下一个请求:
curl.exe -v -k --header "Authorization: GoogleLogin auth=XXX" https://android.apis.google.com/c2dm/send -d "registration_id=XXX" -d "data=helloooo" -d collapse_key=Z
这个方法是有效的!但是如果您像第一次响应中那样使用大写字母"A"的"Auth",则会收到401错误:
curl.exe" -v -k --header "Authorization: GoogleLogin Auth=XXX" https://android.apis.google.com/c2dm/send -d "registration_id=XXX" -d "data=helloooo" -d collapse_key=Z
因此,第二个请求中的"auth"是区分大小写的。我认为这是50%用户会遇到的陷阱。希望这可以帮助到您。
也许这就是问题所在?
http://groups.google.com/group/vogella/browse_thread/thread/95865344e6d2c734
基本上,在 Android 设备上指定的“sender”参数必须与作为发送者(服务器端)注册的电子邮件地址相同。