我带来的解决方案是:
/**
* 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帐户注销哪些方法?
答案 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退出。尝试从堆栈溢出注销,看看会发生什么。