Non sono riuscito a capire come utilizzare C2DM con oAuth 2.0, ma ecco cosa ho provato. Spero che questo possa aiutare qualcuno a risolvere problema simile
Ho trovato una risorsa che sarebbe utile a http://aleksmaus.blogspot.com/2012/01/oauth2-with-google-c2dm-push.html Ma quando ho provato a mandare un messaggio con C2DM tramite OAuth 2.0 non ha funzionato, mentre ha fatto un buon lavoro con ClientLogin.
Ecco come ho fatto con console e browser web (lo so, hai chiesto applicazione PHP, ma spero che questo può anche essere utile per voi.)
all'accesso del client: (riuscito)
ottenuto auth token dal:
$ 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
e inviato un messaggio C2DM come questo:
$ 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
Quindi la mia domanda ha ricevuto con successo C2DM messaggio
OAuth 2.0: (fallito)
ottenuto un oAuth 2.0 autenticazione delle credenziali dal browser web url accedendo:
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 Console: https://code.google.com/apis/console/)
E inviate in questo modo:
$ 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
Poi ottenuto 401 risposta di errore :(
È lì qualcuno che può indicare cosa ho fatto qualcosa di sbagliato?
Modifica
ho trovato la frase "AC2DM è attualmente un'API in Labs" nella mail che si potrebbe ricevuta da Google quando registro C2DM. E ClientLogin deprecation policy will not apply to versions, features, and functionality labeled as "experimental." Non sono sicuro, ma penso che questo sia il motivo per cui i nostri codici non hanno funzionato.
Naturalmente, spero ClientLogin anche essere obsoleto e sostituito con OAuth 2.0 appena
hai guardato il framework yii http://www.yiiframework.com/extension/c2dm/ – Suchi
Non vedo l'ora che arrivi la risposta ... +1 alla domanda. – drulabs
@Suchi Sto già usando il framework Zend quindi non voglio aggiungere un altro framework per questo. Anche se sembra molto buono e semplice. Utilizza OAuth2.0? – Doc