Подтвердить что ты не робот

C2DM с PHP с использованием OAuth2.0 (ClientLogin устарел!)

Примечание. Прежде чем тратить время на чтение, пожалуйста, знайте, что C2DM сам устарел и заменен GCM (http://developer.android.com/guide/google/gcm/c2dm.html)

- Оригинальный вопрос -

Есть ли у нас пример кода для реализации PHP-кода на стороне сервера для отправки сообщений на устройства Android с использованием C2DM?

Я искал много образцов кода, которые используют старый метод проверки ClientLogin, который устарел. Ссылка: https://developers.google.com/accounts/docs/AuthForInstalledApps (Важно: ClientLogin официально устарел по состоянию на 20 апреля 2012 года. Он будет продолжать работать согласно нашей политике устаревания, но мы рекомендуем как можно скорее перейти на OAuth 2.0.)

4b9b3361

Ответ 1

Это не относится к C2DM, поскольку это хостинг-аккаунт, если вы видите https://developers.google.com/accounts/docs/AuthForInstalledApps, который он сказал

ClientLogin может использоваться для авторизации доступа как к обычным, так и к Google размещенных учетных записей. Хостинговая учетная запись является учетной записью пользователя, которая является частью службы Google Apps.

Кроме того, если вы видите, что графическое изображение представляет собой четкое взаимодействие между пользователем как интерфейсом пользовательского интерфейса, так как задействован CAPTCHA.

enter image description here

Edit

Кстати, вы можете видеть из этого сообщения механизм C2DM все еще будет использовать ClientLogin, тем не менее ключ до октября 2011 года истек, поэтому вам нужно их воссоздать. Это довольно недавняя публикация за 8 дней до того, как ClientLogin устарел. ключ входа в систему C2DM

Ответ 2

Я не мог понять, как использовать C2DM с oAuth 2.0, но вот что я пробовал. Надеюсь, это поможет кому-то решить подобную проблему.

Я нашел ресурс, который был бы полезен http://aleksmaus.blogspot.com/2012/01/oauth2-with-google-c2dm-push.html Но когда я попытался отправить сообщение с C2DM через OAuth 2.0, он не работал, хотя хорошо работал с ClientLogin.

Так я сделал с консолью и веб-браузером (Я знаю, вы спросили о реализации PHP, но я надеюсь, что это также может быть полезно для вас)


Вход в систему: (преемник)

получил токен авторизации от:

$ 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 

И отправил сообщение C2DM следующим образом:

$ 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

Затем мое приложение успешно получило сообщение C2DM


oAuth 2.0: (сбой)

получил авторизационный пароль oAuth 2.0 от веб-браузера, обратившись к 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

(Консоль API Google: https://code.google.com/apis/console/)

И отправлено вот так:

$ 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

Затем получен ответ 401: (


Есть ли кто-нибудь, кто может указать, что я сделал что-то неправильно?

Edit

Я нашел предложение "AC2DM в настоящее время является API в Labs" в письме, которое вы могли бы получить от Google при регистрации C2DM. А также Политика конфиденциальности ClientLogin не будет применяться к версиям, функциям и функциям, помеченным как "экспериментальные" . Я не уверен но я думаю, именно поэтому наши коды не работали.

Конечно, я надеюсь, что ClientLogin также будет устаревшим и вскоре заменен OAuth 2.0

Ответ 3

Здесь

вы можете взглянуть, это сработало для меня.

Вам нужно получить регистрацию вашего устройстваId и ввести адрес электронной почты и пароль учетной записи c2dm для публикации post.php.

И другое, что вам нужно знать, это c2dm.php, возникает ошибка, когда он пытается проверить ответ сервера как "200 OK". Потому что он пытается получить этот ответ от тела. Просто прокомментируйте строку в ней, затем запустите.