Как сбросить авторизацию google OAuth 2.0?
Я использую клиентская библиотека Google APIs для JavaScript (бета-версия) для авторизации учетной записи пользователя google в веб-приложении (для манипуляций youtube). Все работает нормально, но я понятия не имею, как "выйти" из моего приложения, то есть сбросить токены доступа.
например, следующий код проверяет авторизацию пользователя, а если нет, показывает всплывающее окно для входа пользователя в учетную запись и разрешения доступа веб-приложения к данным пользователя:
gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: false}, handleAuth);
но клиент у библиотеки нет методов для сброса авторизации.
здесь решение перенаправить пользователя на "accounts.google.com/logout", но это подход не то, что мне нужно: таким образом, мы выходим из учетной записи google не только из моего приложения, но и в любом месте.
Google faq и описание клиентской библиотеки не полезны.
4 ответов
попробуйте отозвать маркер доступа, который должен отозвать фактический грант, чтобы авто-утверждения перестали работать. Полагаю, это решит вашу проблему.
https://developers.google.com/accounts/docs/OAuth2WebServer#tokenrevoke
Это очень просто. Просто отмените доступ.
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
Это зависит от того, что вы подразумеваете под сброс авторизации. Я мог бы придумать три способа сделать это:--1-->
удалить авторизацию на сервере
Перейти к myaccount.google.com/permissions, найдите приложение и удалите его. В следующий раз, когда вы пытаетесь войти в систему, вы должны завершить полный поток авторизации с помощью выбора учетной записи и экрана согласия.выйти на клиента
гапи.auth2.getAuthInstance ().signOut();
Таким образом Сервер авторизации Google по-прежнему запоминает ваше приложение, а маркер авторизации остается в хранилище браузера.выйти из системы и отключить
гапи.auth2.getAuthInstance ().signOut();
гапи.auth2.getAuthInstance ().disconnect ();
Это эквивалентно (1), но на клиенте.