2012-04-26 22 views
11

Nota: Antes de dedicar su tiempo a leer, sepa que C2DM ya está en desuso y reemplazado por GCM (http://developer.android.com/ guía/Google/gcm/c2dm.html)C2DM con PHP usando OAuth2.0 (¡ClientLogin está en desuso!)

- original pregunta -

¿tenemos código de ejemplo para la implementación de código del lado del servidor PHP para empujar mensajes a los dispositivos Android que utilizan C2DM?

He buscado muchos ejemplos de código que están utilizando el antiguo método de autenticación ClientLogin que está en desuso. Referencia: https://developers.google.com/accounts/docs/AuthForInstalledApps (Importante:. ClientLogin ha quedado oficialmente obsoleta de 20 de abril de 2012. Le seguirá funcionando de acuerdo con la política de depreciación, pero te recomendamos migrar a OAuth 2.0 tan pronto como sea posible)

+0

miró el marco yii http://www.yiiframework.com/extension/c2dm/ – Suchi

+1

Estoy esperando la respuesta ... +1 a la pregunta. – drulabs

+0

@Suchi Ya estoy usando Zend framework, así que no querré agregar otro framework para esto. Aunque parece muy bueno y simple. ¿Utiliza OAuth2.0? – Doc

Respuesta

4

Eso no se aplica con C2DM ya que es un alojados accountif que vea la https://developers.google.com/accounts/docs/AuthForInstalledApps que SAIDS

ClientLogin se puede utilizar para autorizar el acceso a las cuentas alojadas de Google normal y . Una cuenta alojada es una cuenta de usuario que forma parte del servicio de Google Apps, .

Además, si ve el gráfico es una clara interacción entre el usuario como interfaz de interfaz de usuario ya que se trata de un CAPTCHA.

enter image description here

Editar

Por cierto se puede ver en este mecanismo C2DM mensaje aún va a utilizar ClientLogin, sin embargo, la clave antes de octubre de 2011 fueron va a expirado, por lo que necesita para volver a crearlos. Esta es una publicación bastante reciente de 8 días antes de que se detuviera ClientLogin. C2DM Client Login Key

+0

Tiene razón, debemos continuar con ClientLogin sin preocuparnos por la insinuación de desaprobación. Se puede ver más información sobre esto aquí http://stackoverflow.com/a/10859270/1104697 – Doc

0

Here

puede ver, funcionó para mí.

Debe obtener el ID de registro de su dispositivo e ingresar la dirección de correo electrónico y la contraseña de su cuenta c2dm en post.php.

Y la otra cosa que necesita saber es acerca de c2dm.php, se produce un error cuando se trata de verificar la respuesta del servidor como "200 OK". Porque está tratando de obtener esta respuesta del cuerpo. Simplemente comente la línea y luego ejecútelo.

+0

Lo siento, pero no veo que te refieras con que ClientLogin está en desuso. Mi respuesta también usa ClientLogin. – osayilgan

2

Aún no he podido descifrar cómo usar C2DM con oAuth 2.0, pero esto es lo que he intentado. Espero que esto puede ayudar a alguien a resolver problema similar

he encontrado un recurso que puede ser útil en http://aleksmaus.blogspot.com/2012/01/oauth2-with-google-c2dm-push.html Pero cuando traté de enviar un mensaje con C2DM a través de OAuth 2.0, no funcionó mientras que hizo un buen trabajo con ClientLogin.

Esta es la forma en que lo hice con la consola y el navegador web (lo sé, lo solicitado aplicación PHP Pero espero que esto también puede ser útil para usted.)


Ingreso de cliente: (exitoso)

tiene auth token:

$ curl -k -d "accountType=HOSTED_OR_GOOGLE&service=ac2dm&source=test-1.0&Email=[email account with @gmail.com without brace]&Passwd=[Google account password without brace]" https://www.google.com/accounts/ClientLogin 

y envió el mensaje C2DM así:

$ curl -k --header "Authorization: GoogleLogin auth=[my ClientLogin auth key without brace]" -d "registration_id=[can be acquired from Android application]" --trace c2dm_trace.txt -d collapse_key=0 https://android.apis.google.com/c2dm/send 

Entonces mi solicitud recibida con éxito C2DM mensaje


OAuth 2.0: (frustrada)

tiene un OAuth 2.credenciales de autenticación 0 desde el navegador web accediendo url:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=[can be acquired from API Access menu in your API Console]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https%3A%2F%2Fandroid.apis.google.com%2Fc2dm&access_type=offline 

(Google API de consola: https://code.google.com/apis/console/)

Y enviado como esto:

$ curl -k -H "Authorization: Bearer [my auth key from oAuth]" --trace curl_trace.txt -d "registration_id=[an be acquired from Android application]" -d "data.message=something to talk" -d collapse_key=0 https://android.apis.google.com/c2dm/send 

Luego consiguió respuesta de error 401 :(


¿Hay ¿alguien que pueda señalar lo que he hecho algo mal?

Editar

que he encontrado la sentencia "AC2DM es actualmente una API en laboratorios" en el correo que usted puede ser recibido de Google al registrarse C2DM. Y ClientLogin deprecation policy will not apply to versions, features, and functionality labeled as "experimental." No estoy seguro, pero creo que es por eso que nuestros códigos no funcionaron.

Por supuesto, espero ClientLogin también ser obsoleto y reemplazado con OAuth 2.0 pronto

+0

401 sucederá cuando no esté autorizado para ver/acceder al recurso especificado. De forma similar a prohibida, asegúrese de que su token OAuth sea válido, no haya caducado y de posibles errores tipográficos o de error. Su solicitud curl se ve bien para mí. – Tim

+0

@Tim // Gracias por la respuesta. Pero ya he comprobado mi credencial de OAuth que es válida cuando vi la respuesta 401. Creo que aún no es compatible ya que C2DM todavía está en beta :( –