如何重置google oauth 2.0授权?

Zav*_*Men 16 google-api oauth-2.0 google-api-client google-oauth

我正在使用Google API Client Library for JavaScript(Beta)在Web应用程序上授权用户google帐户(用于youtube操作).一切正常,但我不知道如何从我的应用程序"注销"用户,即重置访问令牌.

例如,以下代码检查用户授权,如果没有,则显示用户登录帐户的弹出窗口,并允许Web应用程序访问用户数据:

gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: false}, handleAuth);
Run Code Online (Sandbox Code Playgroud)

但客户端库没有重置授权的方法.

有一种解决方法可以将用户重定向到"accounts.google.com/logout",但这种方法不是我需要的:因此我们不仅从我的应用程序,而且从任何地方,从谷歌帐户注销用户.

Google常见问题解答和客户端库说明都没有帮助.

mar*_*uss 12

尝试撤消访问令牌,该令牌应撤销实际授权,以便自动批准将停止工作.我认为这将解决您的问题.

https://developers.google.com/accounts/docs/OAuth2WebServer#tokenrevoke

  • 有关 JavaScript 解决方案,请参阅其他问题:http://stackoverflow.com/questions/12809339/how-to-revoke-an-authentication-token-client-side-against-the-google-api/19205371#19205371 (2认同)

Vin*_*san 7

它非常简单.只需撤销访问权限.

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)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

但它应该在asyncTask中


Sta*_*nko 5

这取决于您所说的重置授权是什么意思。我可以想到三种方法来做到这一点:

  1. 删除服务器上的授权
    转到 myaccount.google.com/permissions,找到您的应用并将其删除。下次尝试登录时,您必须使用帐户选择器和同意屏幕完成完整的授权流程。

  2. 在客户端上
    注销 gapi.auth2.getAuthInstance().signOut();
    这样,Google 授权服务器仍会记住您的应用,并且授权令牌仍保留在浏览器存储中。

  3. 退出并断开
    gapi.auth2.getAuthInstance().signOut();
    gapi.auth2.getAuthInstance().disconnect();
    这等效于 (1) 但在客户端上。