проверка authToken Android на стороннем сервере

Я пишу приложение для 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 или что-то еще. Даже если это так, как я могу проверить, является ли токен send by android app правильным, поэтому я могу сохранить "текстовую" часть сообщения.

спасибо.

5 ответов


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


решение выглядит следующим образом. Вы can проверьте токен по этому 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, опубликованном выше.


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

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


я наткнулся на passport-Google-token passport strategy, которая отлично выполняет эту задачу.

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

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


на основе информации в этом ответе:каков правильный способ проверки предоставленных Google токенов OAuth в узле.сервер js? ,

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