1

Мы пишем приложение с Android-представлением и веб-сайтом. Наше приложение должно связать некоторые данные с Facebook, Google или Twitter (назовите их «FGT»), а затем нажмите соответствующую службу, чтобы вернуть true, если эти данные аутентифицированы. Поток управления ...После того, как AccountManager..getAuthToken, как отправить этот токен своему провайдеру для аутентификации?

  1. Android генерирует некоторые данные
  2. пользователь выбирает FG или T счет
  3. getAuthToken
  4. загрузить данные + лексем, через HTTPS POST, на нашем сайте
  5. Наш веб-сайт (в Django, не то, что это имеет значение) посылает токен аутентификации в Fgt
  6. ФГТ возвращает true, если он любит эту фишку, и false, если он не

Цель - не дать злоумышленнику сотворить данные и выбросить их на наш сайт с помощью curl. И нам/не нужно/нужно загружать данные до F, G или T. Нам не нужно полностью переходить к гибридному приложению, где наш вебсервис аутентифицируется на F, G или T , а затем использует F, G или T API для публикации, электронной почты или твита в имени пользователя.

Очевидно, что здесь есть простой ответ: надеюсь, всего три URI, по одному для F, G или T, в которые я могу вставить Auth Token. Вот почему я предпочел бы НЕ загружать и устанавливать SDK для каждого из Facebook, Google и Twitter, а затем писать тонны кода для каждого конкретного случая. Это загромождает код и оставляет меня ввернутым, когда клиент запрашивает Tumblr или MSN.

(Смежный вопрос: Что второй параметр getAuthToken() «ах» «почта»??)

Таким образом, в то время как я продолжаю читать книги, исходный код, поэтому сообщения, показывающие, как сделать жесткие вещи Трудный путь, может кто-нибудь подскажет мне, как легко сделать легкий способ?

ответ

1

Нить «validating Android's authToken on third party server» ответила на вопрос «какой простой URI попал, чтобы проверить токен?»

Волшебное Ури для Google, является: https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here%

Следующий вопрос Как бухать маркер доступа из getAuthToken. Объем должен быть минимально возможным, чтобы показать пользователю действительно живет здесь:

String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile"; 
am.getAuthToken(a, SCOPE, false, this, null); 

Мой this класс реализует AccountManagerCallback<Bundle> и предоставляет метод run(AccountManagerFuture<Bundle> result).Для документации, такой как «Android AccountManagerFuture getResult gives IOEXcelption when trying to get authorization token», можно позвонить startActivity(), чтобы попросить пользователя разрешить это действие или использовать токен, который уже хранится в AccountManager. (И обратите внимание, что внедрение класса просто для того, чтобы перезванивать себя, является пагубным, особенно если целевой метод назван просто run(), так что делайте, как я говорю, не так, как я, дети!)

Итоговый токен длиной 52 байта, начиная с 'ya29.', поэтому это _ вероятно _ access_token, а не 331 символ, который, вероятно, является id_token.

Результирующий токен не привязан к какому-либо определенному каналу (где «канал» - это единственный уникальный клиент, сервер и область действия). Таким образом, с помощью простого завитка, я могу ударить, что /tokeninfo URI с ним, и получить эту (промытого) JSONic мудрость:

{ 
    "issued_to" : "442575845966-mde4be7eingpb5pntfs839jipsetro6s.apps.googleusercontent.com", 
    "audience" : "424242424242-mde4ab7defghi5jklmn839opqrstuv6s.apps.googleusercontent.com", 
    "user_id" : "424242424242424242424", 
    "scope" : "https://www.googleapis.com/auth/userinfo.profile", 
    "expires_in" : 2272 
} 

И так этот ответ был бы сформирован, для меня, недостающее звено между всеми остальными документацию, которую я пытался прочитать. Aaand теперь мне нужно сделать все это снова для Facebook & Twitter ...

0

Существует простой URL-адрес. Каждый authtoken предоставляется против области. Каждая область позволяет authtoken делать определенные вещи. Если вы попытаетесь сделать то, что разрешено областями, эта вещь потерпит неудачу или преуспеет на основе действительности authtoken.

Простейший объем запроса, вероятно, является «электронной почтой».

Если вы идете на площадку Oauth2 в https://developers.google.com/oauthplayground/, вы можете поэкспериментировать с областями и вызовами, чтобы получить тот, который вам подходит. Вы сможете увидеть URL-адреса, которые затем вам нужно реплицировать в приложении.

+0

Объем oauthplayground оказался всего лишь низким https://www.googleapis.com/auth/userinfo.profile. Tx. В настоящее время я напишу, как использовать это, чтобы получить access_token. (Я раньше получал id_token, который специфичен для канала). – Phlip