2011-10-03 51 views
8

我看到很多類似的問題,但沒有很好的答案,儘管它們中的一些已被接受。 我已註冊C2DM。我收到確認電子郵件。然後我寫了一些簡單的應用程序來註冊C2DM。我得到了id(在模擬器和真實設備上嘗試過)。然後我得到了用於C2DM註冊的電子郵件(與用於獲取ID的應用程序相同的電子郵件)的身份驗證令牌(包含curl)。
當我嘗試推動(也與捲曲),我得到401錯誤(如身份驗證令牌是錯誤的)。c2dm收到ID和授權令牌後發送消息時出現401錯誤

我讀了很多教程,並且我的想法很多。

+0

奇怪的是,當我嘗試從我的電子郵件中獲得auth令牌時,它從未註冊過c2dm,我也收到了auth令牌。所以我認爲用於發送消息的身份驗證令牌必須是錯誤的。 – DixieFlatline

+0

我也有同樣的問題。 Android應用程序向C2DM註冊,然後將用戶令牌發送到Web服務器,我的Web服務器從C2DM獲取授權令牌,然後向已註冊的應用程序發送推送通知,我得到的所有內容都是401錯誤。也許C2DM服務存在問題。可能不是很可靠? – jamesc

回答

1

讓我(只能用捲曲)嘗試:

起初,我們所申請的身份驗證令牌:

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%的用戶正在進入的陷阱。希望有所幫助。