如何使用AngularJS从Google帐户注销

时间:2014-12-03 16:53:56

标签: angularjs google-account

  • 我正在编写一个使用Google API在我们的应用中使用G +帐户进行身份验证的应用。
  • 目前,客户希望注销不仅撤销我们应用程序的访问令牌,还要退出用于身份验证的Google帐户。

我带来的解决方案是:

/**
 * Signs the user out.
 */
HeaderCtrl.prototype.signOut = function() {

  // this part revokes token
  $http.jsonp('https://accounts.google.com/o/oauth2/revoke?token=' +
      accessToken, {
        params: {
          callback: 'JSON_CALLBACK',
          format: 'json'
        }
      }).success( /* Do stuff on success */);

  // this part logs out from google account
  $http.jsonp('https://accounts.google.com/logout');
};

第二次调用有效但在响应处理时记录错误:

  

拒绝执行来自' https://accounts.google.com/logout'的脚本因为它的MIME类型(' text / html')不可执行,并且启用了严格的MIME类型检查。

您可以使用AngularJS从Google帐户注销哪些方法?

2 个答案:

答案 0 :(得分:2)

您不应该从Google注销用户,他们当然不想要它。因此,永远不应该达到https://accounts.google.com/logout

您真正想要的是让他们从您的网站退出。撤销令牌应该足以支持Google身份验证方(您的网站不会假设客户端已记录到他的旧令牌)

调用signOut方法后,只需考虑他不再登录并结束您网站上的会话。

答案 1 :(得分:2)

我认为你要做很多与“正常退出”体验无关的事情。

也许你应该和你的“顾客”谈谈,以澄清他/她想要的用户故事。

正常退出是一行js(source):

gapi.auth.signOut();

如果我没有错,你在代码中首先做的事情(即撤销访问令牌)就是为remove the association between the account on your app and the google account used for sign-in提供选项的东西。如链接所示,您必须向用户提供此选项以遵循g +开发人员政策,但这与注销不同。也许您应该作为用户在提供g +登录的站点上尝试这两个功能,例如堆栈溢出。 (在撤销g +关联之前,请务必知道您的密码。)

对于Google的注销,您的应用不应该这样做,Google也不应该为您提供一种方法。 (我宁愿认为这是不可能的。)

但是,您可以在注销后提醒用户他/她也可能需要从Google退出。尝试从堆栈溢出注销,看看会发生什么。