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.)


person Doc    schedule 26.04.2012    source источник
comment
вы смотрели на структуру yii yiiframework.com/extension/c2dm   -  person Suchi    schedule 26.04.2012
comment
Я так жду ответа... +1 к вопросу.   -  person drulabs    schedule 26.04.2012
comment
@Suchi Я уже использую фреймворк Zend, поэтому я не хочу добавлять для этого еще один фреймворк. Хотя выглядит очень хорошо и просто. Использует ли он OAuth2.0?   -  person Doc    schedule 27.04.2012


Ответы (3)


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

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

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

введите здесь описание изображения

Изменить

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

person Necronet    schedule 08.05.2012
comment
Вы правы, мы должны продолжить работу с ClientLogin, не беспокоясь об устаревании. Подробнее об этом можно узнать здесь stackoverflow.com/a/10859270/1104697. - person Doc; 02.11.2012

Я еще не мог понять, как использовать 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

(Консоль Google API: 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 в лабораториях в письме, которое вы могли получить от Google при регистрации C2DM. И Политика прекращения поддержки ClientLogin не распространяется на версии, функции и функции, помеченные как экспериментальные. . Я не уверен, но думаю, что именно поэтому наши коды не работали.

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

person Joon Hong    schedule 04.05.2012
comment
401 произойдет, если вы не авторизованы для просмотра/доступа к указанному ресурсу. Как и в случае с запрещенным, убедитесь, что ваш токен OAuth действителен, не просрочен и не содержит потенциальных опечаток/ошибок. Ваш запрос на завивку выглядит хорошо для меня. - person Tim; 04.05.2012
comment
@ Тим // Спасибо за ответ. Но я уже проверил свои учетные данные OAuth, которые действительны, когда я увидел ответ 401. Я думаю, что он еще не поддерживается, так как C2DM все еще находится в стадии бета-тестирования :( - person Joon Hong; 05.05.2012

Здесь

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

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

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

person osayilgan    schedule 01.05.2012
comment
Извините, я просто не видел, что вы имеете в виду, что ClientLogin устарел. В моем ответе также используется ClientLogin. - person osayilgan; 01.05.2012