2011-10-03 7 views
8

Ho visto molte domande simili ma nessuna risposta valida nonostante alcune di esse siano accettate. Mi sono registrato per C2DM. Ho ricevuto un'email di conferma. Poi ho scritto alcune semplici app per registrarmi per C2DM. Ottengo l'id (provato su emulatore e su dispositivo reale). Poi ho ricevuto il token auth (con arricciatura) per la mia e-mail che ho usato per la registrazione C2DM (la stessa e-mail che uso in app per acquisire l'id).
Quando provo a fare il push (anche con arricciatura), ottengo 401 errori (come il token auth errato).errore c2dm 401 durante l'invio di messaggi dopo la ricezione di ID e autorizzazione token

Ho letto molti tutorial e sto esaurendo le idee.

+0

La cosa strana è che quando ho provato a ottenere il token di autenticazione per la mia e-mail che non è stato MAI registrato per c2dm, ottengo anche il token di autenticazione. Quindi penso che il mio token di autenticazione usato per inviare messaggi sia sbagliato. – DixieFlatline

+0

Ho anche lo stesso problema. Registri delle app Android con C2DM quindi invia token utente al server Web, il mio server Web ottiene il token di autenticazione da C2DM, quindi invia notifica push all'app registrata e tutto ciò che ottengo è l'errore 401. Forse c'è un problema con il servizio C2DM. Forse non molto affidabile? – jamesc

risposta

1

Fammi provare (con l'arricciatura solo):

In un primo momento stiamo applicando per il token di autenticazione:

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

Nel risultato il vostro stanno ricevendo il token di autenticazione:

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

Si noti che la risposta di Auth è nel risultato con una prima lettera maiuscola: "Auth = XX X"!

Ora stiamo usando il risultato per la prossima richiesta, ma con la minuscola prima lettera:
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

E questo funziona! Ma si stanno ottenendo un errore 401, se si utilizza l'autenticazione come nella prima risposta (caso A superiore a "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

Così il "auth" di richiesta 2 è case sensitive. Penso che questo sia un trabocchetto in cui il 50% degli utenti sta entrando. Spero possa aiutare.

Problemi correlati