Как сбросить авторизацию 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-->

  1. удалить авторизацию на сервере
    Перейти к myaccount.google.com/permissions, найдите приложение и удалите его. В следующий раз, когда вы пытаетесь войти в систему, вы должны завершить полный поток авторизации с помощью выбора учетной записи и экрана согласия.

  2. выйти на клиента
    гапи.auth2.getAuthInstance ().signOut();
    Таким образом Сервер авторизации Google по-прежнему запоминает ваше приложение, а маркер авторизации остается в хранилище браузера.

  3. выйти из системы и отключить
    гапи.auth2.getAuthInstance ().signOut();
    гапи.auth2.getAuthInstance ().disconnect ();
    Это эквивалентно (1), но на клиенте.


просто использовать: gapi.auth.setToken(null);