Как 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), но на клиенте.