Как reset авторизация google oauth 2.0?
Я использую Клиентскую библиотеку API Google API для бета-версии для авторизации учетной записи пользователя google в веб-приложении (для манипуляций с youtube). Все работает нормально, но я понятия не имею, как "выйти" из моего приложения, т.е. reset токены доступа.
Например, следующий код проверяет авторизацию пользователя, а если нет, отображает всплывающее окно для входа пользователя в систему и разрешает доступ веб-приложения к пользовательским данным:
gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: false}, handleAuth);
Но у клиентской библиотеки нет методов авторизации reset.
Существует обходной путь, чтобы перенаправить пользователя на "accounts.google.com/logout", но это
подход не то, что мне нужно: таким образом, мы отключаем пользователя от учетной записи google не только из моего приложения, но и в любом месте.
Описание файла faq и клиентской библиотеки Google не является полезным.
Ответы
Ответ 1
Попробуйте отменить токен доступа, который должен аннулировать фактический грант, поэтому автоматическое одобрение перестанет работать. Я предполагаю, что это решит вашу проблему.
https://developers.google.com/accounts/docs/OAuth2WebServer#tokenrevoke
Ответ 2
Это очень просто. Просто отмените доступ.
void RevokeAcess()
{
try{
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("https://accounts.google.com/o/oauth2/revoke?token="+ACCESS_TOKEN);
org.apache.http.HttpResponse response = client.execute(post);
}
catch(IOException e)
{
}
}
Но это должно быть в asyncTask
Ответ 3
Просто используйте: gapi.auth.setToken(null);
Ответ 4
Это зависит от того, что вы подразумеваете, сбросив авторизацию. Я мог бы подумать о трех способах этого:
-
Удалить авторизацию на сервере
Перейдите на страницу myaccount.google.com/permissions, найдите свое приложение и удалите его. В следующий раз, когда вы попытаетесь войти в систему, вы должны завершить полный поток авторизации с помощью экрана выбора аккаунта и согласия.
-
Выйти на клиентском компьютере
. Gapi.auth2.getAuthInstance() SignOut();
Таким образом, сервер авторизации Google все еще помнит ваше приложение, а токен авторизации остается в памяти браузера.
-
Выйти и отключиться
. Gapi.auth2.getAuthInstance() SignOut();
. Gapi.auth2.getAuthInstance() отключить();
Это эквивалентно (1), но на клиенте.