Примечание. Прежде чем тратить время на чтение, пожалуйста, знайте, что 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 как можно скорее.)
Это не относится к C2DM, поскольку это размещенная учетная запись, если вы видите https://developers.google.com/accounts/docs/AuthForInstalledApps, о которой говорилось
ClientLogin можно использовать для авторизации доступа к обычным и общедоступным учетным записям Google. Хостинговая учетная запись является учетной записью пользователя, которая является частью службы Google Apps.
Кроме того, если вы видите, что графическое изображение представляет собой четкое взаимодействие между пользователем как интерфейсом пользовательского интерфейса, так как задействован CAPTCHA.
редактировать
Кстати, вы можете видеть из этого сообщения механизм C2DM все еще будет использовать ClientLogin, тем не менее ключ до октября 2011 года истек, поэтому вам нужно их воссоздать. Это довольно недавняя публикация за 8 дней до того, как ClientLogin устарел. Ключ входа в систему C2DM
Я не мог понять, как использовать 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 от веб-браузера, обратившись к 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 ответ об ошибке 🙁
Есть ли кто-нибудь, кто может указать, что я сделал что-то неправильно?
редактировать
Я нашел предложение «AC2DM в настоящее время является API в Labs» по почте, которое вы могли бы получить от Google при регистрации C2DM. И политика конфиденциальности ClientLogin не будет применяться к версиям, функциям и функциям, помеченным как «экспериментальные». Я не уверен, но я думаю, поэтому наши коды не работали.
Конечно, я надеюсь, что ClientLogin также будет устаревшим и вскоре заменен OAuth 2.0
Вот
вы можете взглянуть, это сработало для меня.
Вам нужно получить регистрацию вашего устройства и введите свой адрес электронной почты и пароль учетной записи c2dm для post.php.
И другое, что вам нужно знать, это c2dm.php, возникает ошибка, когда он пытается проверить ответ сервера как «200 OK». Потому что он пытается получить этот ответ от тела. Просто прокомментируйте строку в ней, затем запустите.