我正在使用Google Auth Login
申请。我的SignIn
按钮位于登录页面上,我的注销是我的标题的一部分,它包含在我的整个应用程序中。点击退出按钮后,我无法从我的应用程序中签署用户
Login.tpl代码(包含登录按钮)
<div align="middle" class="g-signin2" data-onsuccess="onSignIn"></div>
<meta name="google-signin-client_id" content="CLIENT_ID">
我可以登录但无法注销。注销按钮是header.tpl的一部分,它包含在所有文件中,但我收到的错误标有上面的粗体。
Header.tpl代码
<meta name="google-signin-client_id" content="CLIENT_ID">
<a href="/users/auth/login" class = "logout"><i class="fa fa-sign-out pull-right"></i> Log Out</a>
我的JS代码
$(".logout").click(function(event) {
event.preventDefault();
gapi.load('auth2', function () {
var auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID',
cookiepolicy: 'single_host_origin'
});
auth2.then(function(){
// this get called right after token manager is started
auth2.signOut();
console.log('User signed out.');
});
});
window.location = $(this).attr('href');
});
代码永远不会进入定义了注销的块,因此我也没有在控制台中获得任何内容。
但是,如果我在控制台中运行此代码,则用户会成功注销,但当我在localhost上运行时,这不会对应用程序起作用
任何线索都会受到高度赞赏。
答案 0 :(得分:1)
我找到了解决方案,看来你只能在signinCallback触发后调用signOut方法。据我所知,触发signinCallback的唯一方法是在页面上放置一个登录按钮。
保留一个隐藏的登录按钮,我的注销按钮写在我面前的诀窍。
在header.tpl中包含此内容,其中我的注销按钮已写入
<div style = "display:none" align="middle" class="g-signin2" data-cookiepolicy='single_host_origin' data-onsuccess="onSignIn"></div>
答案 1 :(得分:1)
我能够使用以下代码在localhost上运行它:
auth2.signOut().then(function () {
auth2.disconnect();
gapi.auth2.getAuthInstance().currentUser.get().reloadAuthResponse();
});
查看有关this github page
的讨论