проверка авторизации Android на стороннем сервере - PullRequest
8 голосов
/ 23 марта 2012

Я пишу приложение для Android, которое использует AccountManager для получения токена. Из приложения для Android я могу взаимодействовать с Google Picasa - он отлично работает.

Я хотел бы добиться следующего: отправить некоторый текст + authToken на сторонний сервер, а затем проверить правильность токена перед сохранением текста. Теперь возникает вопрос: можно ли определить, является ли authToken определенного токена корректным только на самом токене (и, возможно, на адресе электронной почты).

Я уже запрограммировал серверную часть, которая принимает токен (отправка из приложения Android), затем выдает запрос на URL-адрес:

https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here%

Я получаю следующий JSON:

{
  "error" : "invalid_token"
}

Но ссылка здесь http://oauthssodemo.appspot.com/step/4 гласит, что если токен верен, я должен получить другой ответ JSON. Можете ли вы сказать мне, что я делаю неправильно: я считаю, что способ проверить правильность токена на самом деле не так прост, но мне лучше реализовать весь openid или что-то в этом роде. Даже если это так, как я могу проверить правильность отправки токена приложением для Android, чтобы я мог сохранить текстовую часть сообщения.

Спасибо.

Ответы [ 5 ]

7 голосов
/ 25 января 2013

Прекратите использовать AccountManager и начните использовать класс GoogleAuthUtil службы Google Play, тогда это станет проще. См. http://android -developers.blogspot.ca / 2013/01 / проверочный back-end-call-from-android.html

2 голосов
/ 05 апреля 2012

Решение заключается в следующем.Вы можете проверить токен по этому URL:

https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here%

Но в моем случае я пытался проверить «Код авторизации», а не «Токен доступа», как вы можете видеть здесь: https://code.google.com/oauthplayground/

Если вы используете Android и OAuth, не используйте

lh2 

, а вместо этого используйте в качестве имени службы следующее:

http://picasaweb.google.com/data/

Так что вам следуетВызовите getAuthToken следующим образом

getAuthToken(account, "http://picasaweb.google.com/data/" , true, null, null);

Затем вы можете проверить токен, полученный от этого вызова, по указанному выше URI.

1 голос
/ 27 марта 2015

Я столкнулся с паспортной стратегией паспорт-гугл-токен, которая отлично выполняет задачу.

https://www.npmjs.com/package/passport-google-token

Более подробная информация представлена ​​в ссылке выше.

1 голос
/ 19 июля 2012

читать это https://developers.google.com/accounts/docs/OAuth2WebServer

После того, как веб-сервер получит код авторизации, он может обменять код авторизации на токен доступа и токен обновления.Этот запрос является публикацией HTTP и включает следующие параметры:

0 голосов
/ 02 мая 2013

На основании информации, содержащейся в этом ответе: Как правильно проверять токены OAuth, предоставленные Google, на сервере node.js? ,

вы можете попробовать использовать id_token вместо access_token в URL для вызова конечной точки tokeninfo Google.

...