我正在关注 Google's guide 以注销用户。
考虑到刷新页面后 gapi.auth2
将是未定义的,我正在做:
if (gapi.auth2) {
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut();
} else {
gapi.load('auth2', function () {
gapi.auth2.init({
client_id: 'myAppID',
cookiepolicy: 'single_host_origin'
}).signOut();
});
}
但是我在 else 块中得到了
uncaught exception: This method can only be invoked after the token manager is started
。我还尝试将 auth 实例存储在本地存储中,但这样做会导致在对其进行字符串化时出现一些循环对象值错误。
一种可能的解决方案是做一个
document.location.href = "https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=myUrl";
但是,除了将用户从我的应用程序中注销之外,这不仅会影响用户登录的所有 Google 服务,而且还会进行不需要的重定向。
有不同的方法吗?
最佳答案
有一种更简单的方法,您只需要调用.then,然后调用gapi.auth2.init
gapi.load('auth2', function () {
var auth2 = gapi.auth2.init({
client_id: 'myAppID',
cookiepolicy: 'single_host_origin'
});
auth2.then(function(){
// this get called right after token manager is started
auth2.signOut();
});
});