如何重置google oauth 2.0授权



我使用Google api Client Library for JavaScript (Beta)来授权用户在web应用程序上的Google帐户(用于youtube操作)。一切都很好,但我不知道如何"注销"用户从我的应用程序,即重置访问令牌。

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

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

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

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

Google faq和客户端库描述都没有帮助

尝试撤销访问令牌,这将撤销实际授予,因此自动审批将停止工作。我想这会解决你的问题。

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,找到你的应用程序并删除它。下次您尝试登录时,您必须使用帐户选择器和同意屏幕完成完整的授权流程。

  2. 退出客户端

    .signOut gapi.auth2.getAuthInstance () ();这样,Google授权服务器仍然会记住你的应用程序,并且授权令牌仍然保存在浏览器存储中。

  3. 退出并断开连接

    .signOut gapi.auth2.getAuthInstance () ();
    .disconnect gapi.auth2.getAuthInstance () ();这相当于(1),但在客户端。

直接使用:gapi.auth.setToken(null);

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);

相关内容

  • 没有找到相关文章