如何重置Google OAuth 2.0授权?

23

我正在使用Google APIs Client Library for JavaScript (Beta)来授权用户在Web应用程序上使用其谷歌帐户(用于YouTube操纵)。一切正常,但是我不知道如何“注销”用户,即重置访问令牌。

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

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

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

有一个解决方法可以将用户重定向到“accounts.google.com/logout”,但这种方法并不符合我的需求:因此,我们不仅从我的应用程序中注销用户,还要从谷歌账户中注销用户。

Google的常见问题和客户端库描述也没有帮助。


重复问题 - Mark S.
5个回答

18

2
对于 JavaScript 解决方案,请参见此其他问题:http://stackoverflow.com/questions/12809339/how-to-revoke-an-authentication-token-client-side-against-the-google-api/19205371#19205371 - Nacho Coloma
如何使用访问令牌撤销凭据? - Jay Patel

8
非常简单,只需撤销访问权限即可。
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中执行


7
这取决于你所说的重置授权的含义。我能想到三种方法来完成这个过程:
  1. 在服务器上删除授权
    前往myaccount.google.com/permissions,找到你的应用并将其删除。下次尝试登录时,你必须使用帐户选择器和同意屏幕完成完整的授权流程。

  2. 在客户端注销
    gapi.auth2.getAuthInstance().signOut();
    通过这种方式,Google授权服务器仍然记得你的应用程序,并且授权令牌保留在浏览器存储中。

  3. 注销并断开连接
    gapi.auth2.getAuthInstance().signOut();
    gapi.auth2.getAuthInstance().disconnect();
    这相当于(1),但在客户端执行。


0

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接