2015-12-15 2 views

ответ

2

Авторизация OAuth2 использует токен доступа для доступа к API, вместо использования имени пользователя и пароля. В обычном OAuth2 методе мы первоначально запрашивали код авторизации от Органа с использованием области, URL-адреса переадресации и идентификатора клиента, затем обменивать код с идентификатором клиента и секретным ключом клиента, чтобы получить токен доступа и обновить токен. Но с помощью Android AccountManager мы можем легко получить токен доступа для API Google.

GoogleAuthUtil.getToken() принимает три аргумента: контекст, адрес электронной почты, а другой строковый аргумент называется областью. Каждый информационный ресурс, который хочет говорить OAuth 2.0, должен публиковать, какую область (или области применения) он использует. Например, чтобы получить доступ к API Google+, область действия - oauth2:https://www.googleapis.com/auth/plus.me.. Вы можете предоставить несколько областей, разделенных пробелами, в одном вызове и получить токен, который обеспечивает доступ ко всем из них. Код, как это может быть типичным:

private final static String G_PLUS_SCOPE = 
     "oauth2:https://www.googleapis.com/auth/plus.me"; 
    private final static String USERINFO_SCOPE = 
     "https://www.googleapis.com/auth/userinfo.profile"; 
    private final static String SCOPES = G_PLUS_SCOPE + " " + USERINFO_SCOPE; 

getToken() будет синхронным, но три вещи, держать его от так просто:

Первый раз, когда приложение запрашивает маркер для доступа к некоторому ресурсу, то системе необходимо будет взаимодействовать с пользователем, чтобы убедиться, что с ним все в порядке.

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

Инфраструктура, которая обрабатывает эти запросы, может быть сильно загружена и не сможет сразу получить ваш токен. Вместо того, чтобы держать вас в ожидании или просто терпеть неудачу, он может попросить вас уйти и вернуться немного позже.

Предоставлено Goes To OAuth Identity Tools

https://developers.google.com/android/reference/com/google/android/gms/auth/GoogleAuthUtil.html#getToken(android.content.Context)

Смежные вопросы