c2dm 401 error when sending messages after receiving id and auth token

一笑奈何 提交于 2019-11-30 13:39:59

Let me try it (with curl only):

At first we are applying for the auth token:

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

In the result your are receiving the auth token:

< 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):

Please note that the Auth response is in the result with an uppercase first letter: "Auth=XXX"!

Now we are using the result for the next request but with lowercase first letter:
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

And this works! But you are getting a 401 error, if you are using the auth like in the first response (upper case A in "Auth"):

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

So the "auth" of request 2 is case sensitive. I think this is a pitfall 50% of the users are stepping into. Hope that helps.

Maybe this is the problem?

http://groups.google.com/group/vogella/browse_thread/thread/95865344e6d2c734

Basucally, the "sender" parameter that you specifiy on teh Android device must be the same email address that is registred as the sender (server-side).

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!