防止谷歌自动触发数据onsuccess="onSignIn”;

Prevent google from automatically triggering data-onsuccess="onSignIn"

本文关键字:quot onsuccess onSignIn 数据 谷歌      更新时间:2023-09-26

我做了谷歌连接,让用户使用他们的谷歌帐户登录。

我所做的是,创建一个按钮

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

然后在SignIn()上创建

<script>
  function onSignIn(googleUser) {
    // Useful data for your client-side scripts:
    var profile = googleUser.getBasicProfile();
    console.log("ID: " + profile.getId()); // Don't send this directly to your server!
    console.log("Name: " + profile.getName());
    console.log("Image URL: " + profile.getImageUrl());
    console.log("Email: " + profile.getEmail());
    // The ID token you need to pass to your backend:
    var id_token = googleUser.getAuthResponse().id_token;
    console.log("ID Token: " + id_token);
  };
</script>

然后将该令牌发送到PHP服务器进行验证和获取数据。这很好。

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

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

只需添加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>

所以终于弄明白了。。。

只需将onclick="gp_signOut();"分配给退出按钮

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