Javascript 防止google在成功时自动触发数据=";onSignIn“;

Javascript 防止google在成功时自动触发数据=";onSignIn“;,javascript,php,oauth,Javascript,Php,Oauth,我使用谷歌连接让用户使用他们的谷歌账户登录 我做的是,创建一个按钮 <div class="g-signin2 social_signin" data-onsuccess="onSignIn"></div> 然后创建onSignIn() 函数onSignIn(谷歌用户){ //客户端脚本的有用数据: var profile=googleUser.getBasicProfile(); console.log(“ID:+profile.getId());//不要直接将

我使用谷歌连接让用户使用他们的谷歌账户登录

我做的是,创建一个按钮

<div class="g-signin2 social_signin" data-onsuccess="onSignIn"></div>

然后创建onSignIn()


函数onSignIn(谷歌用户){
//客户端脚本的有用数据:
var profile=googleUser.getBasicProfile();
console.log(“ID:+profile.getId());//不要直接将其发送到服务器!
log(“Name:+profile.getName());
log(“图像URL:+profile.getImageUrl());
log(“Email:+profile.getEmail());
//需要传递到后端的ID令牌:
var id_token=googleUser.getAuthResponse().id_token;
日志(“ID令牌:+ID_令牌”);
};
然后将该令牌发送到PHP服务器进行验证和获取数据。那很好

但我的问题是,当用户从我的网站注销时,谷歌会自动触发“登录”,而无需点击我创建的按钮。所以当用户注销时,用户会自动重新登录


你能帮我阻止这个自动登录吗?或者我可以取消对用户的授权吗

所以最后终于明白了

只需将onclick=“gp_signOut();”分配给注销按钮

function gp_signOut() {
    var auth2 = gapi.auth2.getAuthInstance();
    auth2.signOut().then(function () {
        console.log('User signed out.');
    });
}

只需添加onclick并单击创建全局变量(默认为false),该变量为true,您就可以调用BasicProfile

<div class="g-signin2 social_signin" onclick="ClickLogin()" data-onsuccess="onSignIn"></div>
<script>
var clicked=false;//Global Variable
function ClickLogin()
{
    clicked=true;
}
function onSignIn(googleUser) {
    if (clicked) {
        profile = googleUser.getBasicProfile();    
    }
};
</script>

var=false//全局变量
函数ClickLogin()
{
单击=真;
}
函数onSignIn(谷歌用户){
如果(单击){
profile=googleUser.getBasicProfile();
}
};

我尝试了这种方法,但无法触发onSignin func,我的意思是一切正常,但当我查看控制台时,它应该提供特定的输出,但它没有。你能告诉我过程吗!:)你能展示一些代码吗?似乎您缺少onsuccess=“onSignIn”的数据,这里我尝试使用官方参考(data prompt=“approve”),但仍然不起作用,Thx,这很有帮助
<div class="g-signin2 social_signin" onclick="ClickLogin()" data-onsuccess="onSignIn"></div>
<script>
var clicked=false;//Global Variable
function ClickLogin()
{
    clicked=true;
}
function onSignIn(googleUser) {
    if (clicked) {
        profile = googleUser.getBasicProfile();    
    }
};
</script>