如何重置 google oauth 2.0 授权?

Posted

技术标签:

【中文标题】如何重置 google oauth 2.0 授权?【英文标题】:How to reset google oauth 2.0 authorization? 【发布时间】:2013-03-16 18:56:46 【问题描述】:

我正在使用Google APIs Client Library for javascript (Beta) 在网络应用程序上授权用户 google 帐户(用于 youtube 操作)。一切正常,但我不知道如何从我的应用程序中“注销”用户,即重置访问令牌。

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

gapi.auth.authorize(client_id: CLIENT_ID, scope: SCOPES, immediate: false, handleAuth);

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

有workaround 将用户重定向到“accounts.google.com/logout”,但这 方法不是我需要的:因此我们不仅从我的应用程序,而且在任何地方都从谷歌帐户注销用户。

Google 常见问题解答和客户端库描述均无帮助。

【问题讨论】:

Duplicate question 【参考方案1】:

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

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

【讨论】:

对于 JavaScript 解决方案,请参阅另一个问题:***.com/questions/12809339/… 如何使用访问令牌撤销凭据?【参考方案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】:

这取决于您重置授权的含义。我可以想到三种方法:

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

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

    退出并断开连接 gapi.auth2.getAuthInstance().signOut(); gapi.auth2.getAuthInstance().disconnect(); 这相当于 (1) 但在客户端上。

【讨论】:

【参考方案4】:

只需使用:gapi.auth.setToken(null);

【讨论】:

【参考方案5】:

dotnet 的解决方案,调用下面的 API 并传递访问令牌,doc - https://developers.google.com/identity/protocols/oauth2/web-server#tokenrevoke

        string url = "https://accounts.google.com/o/oauth2/revoke?token=" + profileToken.ProfileAccessToken;
        RestClient client = new RestClient(url);

        var req = new RestRequest(Method.POST);
        IRestResponse resp = client.Execute(req);

【讨论】:

以上是关于如何重置 google oauth 2.0 授权?的主要内容,如果未能解决你的问题,请参考以下文章

Google OAuth 2.0 - 离线访问的增量授权

Google OAuth 2.0 增量授权不起作用

尝试切换开关以在 Google APIS Explorer 中使用 OAuth 2.0 授权请求返回 500 错误

OAuth 2.0介绍

使用服务帐户通过 OAuth 2.0 调用 v3 Google 日历 API 时出现“需要登录”401 未经授权的消息

OAuth 2.0