2011-10-03 14 views
8

He visto muchas preguntas similares pero no hay una buena respuesta a pesar de que algunas de ellas son aceptadas. Me he registrado para C2DM. Recibí un correo electrónico de confirmación. Luego escribí una aplicación simple para registrarme en C2DM. Obtengo la identificación (en el emulador probado y en el dispositivo real). Luego obtuve el token de autenticación (con curl) para mi correo electrónico que utilicé para el registro C2DM (el mismo correo electrónico que uso en la aplicación para adquirir el ID).
Cuando intento hacer el push (también con curl), obtengo el error 401 (como que el token de autenticación es incorrecto).error de c2dm 401 al enviar mensajes después de recibir ID y auth token

He leído muchos tutoriales y me estoy quedando sin ideas.

+0

Lo extraño es que, cuando traté de obtener auth token para mi correo electrónico que NUNCA estaba registrado para c2dm, también obtengo auth token. Así que creo que mi token de autenticación utilizado para enviar mensajes debe estar equivocado. – DixieFlatline

+0

También estoy teniendo el mismo problema. La aplicación de Android se registra con C2DM y luego envía un token de usuario al servidor web, mi servidor web recibe el token de autenticación de C2DM y luego envía notificaciones automáticas a la aplicación registrada y todo lo que obtengo es un error 401. Tal vez haya un problema con el servicio C2DM. Posiblemente no es muy confiable? – jamesc

Respuesta

1

Déjame intentarlo (con rizo solamente):

Al principio estamos aplicando para el token de autenticación:

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

En el resultado de su están recibiendo el token de autenticación:

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

Tenga en cuenta que la respuesta de autenticación está en el resultado con una primera letra en mayúscula: "Auth = XX X"!

Ahora estamos utilizando el resultado para la siguiente petición, pero con minúscula primera letra:
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

y esto funciona! Pero que está recibiendo un error 401, si está utilizando la autenticación como en la primera respuesta (caso A superior en "Autenticación"):

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

Así que la "autenticación" de la petición 2 se distingue entre mayúsculas y minúsculas. Creo que este es un peligro al que se están acercando el 50% de los usuarios. Espero que ayude.

0

Quizás este es el problema?

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

Basucally, el parámetro "emisor" que specifiy en teh dispositivo Android debe ser la misma dirección de correo electrónico que está registrada como remitente (del lado del servidor).

+0

No, aquí el problema es entre el remitente (del lado del servidor) y el servidor de Google C2DM. No está relacionado con el dispositivo. – Kamchatka

Cuestiones relacionadas