我看到很多类似的问题,但没有很好的答案,尽管它们中的一些已被接受。 我已注册C2DM。我收到确认电子邮件。然后我写了一些简单的应用程序来注册C2DM。我得到了id(在模拟器和真实设备上尝试过)。然后我得到了用于C2DM注册的电子邮件(与用于获取ID的应用程序相同的电子邮件)的身份验证令牌(包含curl)。
当我尝试推动(也与卷曲),我得到401错误(如身份验证令牌是错误的)。c2dm收到ID和授权令牌后发送消息时出现401错误
我读了很多教程,并且我的想法很多。
我看到很多类似的问题,但没有很好的答案,尽管它们中的一些已被接受。 我已注册C2DM。我收到确认电子邮件。然后我写了一些简单的应用程序来注册C2DM。我得到了id(在模拟器和真实设备上尝试过)。然后我得到了用于C2DM注册的电子邮件(与用于获取ID的应用程序相同的电子邮件)的身份验证令牌(包含curl)。
当我尝试推动(也与卷曲),我得到401错误(如身份验证令牌是错误的)。c2dm收到ID和授权令牌后发送消息时出现401错误
我读了很多教程,并且我的想法很多。
让我(只能用卷曲)尝试:
起初,我们所申请的身份验证令牌:
curl.exe -v -k https://www.google.com/accounts/ClientLogin -d [email protected] -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 = XX X”!
现在我们正在使用的结果为下一个请求,但与首字母小写:
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
而这个作品!但是你得到一个401错误,如果使用的是在auth像在第一响应(在“验证”大写A):
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
所以请求2“AUTH”区分大小写。我认为这是50%的用户正在进入的陷阱。希望有所帮助。
也许这是问题?
http://groups.google.com/group/vogella/browse_thread/thread/95865344e6d2c734
Basucally,你格兰Android设备上specifiy“发件人”参数必须是申请为发送者(服务器端)的电子邮件地址。
不,这里的问题在发件人(服务器端)和Google C2DM服务器之间。这与设备无关。 – Kamchatka
奇怪的是,当我尝试从我的电子邮件中获得auth令牌时,它从未注册过c2dm,我也收到了auth令牌。所以我认为用于发送消息的身份验证令牌必须是错误的。 – DixieFlatline
我也有同样的问题。 Android应用程序向C2DM注册,然后将用户令牌发送到Web服务器,我的Web服务器从C2DM获取授权令牌,然后向已注册的应用程序发送推送通知,我得到的所有内容都是401错误。也许C2DM服务存在问题。可能不是很可靠? – jamesc