проверка 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.