Intereting Posts
Как следует структурировать модель в MVC? Как ограничить доступ к содержимому WordPress в приложении .NET / PHP Вывести метабокс в виде форматированного текста Получение pagename с помощью PHP_SELF – опасности? PHP-функция для построения строки запроса из массива Переменные php $ _SESSION исчезают и появляются случайно Доступ к большим массивам в PHP Parsing stdClass Данные объекта в php Что это за ошибка? «Ошибка базы данных: данные усечены для столбца« column_name »в строке 1 Как получить переменную $ _SESSION в качестве параметра в событии onload Добавление пользовательского пункта меню в меню WordPress PHP ищет строку в массиве с разным порядком слов mysqli_stmt :: bind_param Число переменных не соответствует количеству параметров в подготовленном операторе Uncaught OAuthException: Неизвестная ошибка произошла с PHP API PHP Как вставить текст со специальными символами в mysql с помощью codeigniter

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 как можно скорее.)

Это не относится к 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: (Failed)

получил авторизационные полномочия 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». Потому что он пытается получить этот ответ от тела. Просто прокомментируйте строку в ней, затем запустите.