如何防止Google OAuth自动登录?

And*_*sen 6 javascript google-oauth

这与有关Google Plus的问题有关:禁止使用Google Plus自动登录

区别在于我使用的是Google登录平台,而不是具有不同API的google plus。

背景:

我有一个包含免费试用注册表格的定价页面。该表单具有Google登录按钮。我希望已登录的用户仍能够在不使用Google登录导致重定向的情况下查看定价页面。

我的密码

我在页面顶部有一个meta标签,用于标识我的应用程序。 <meta name="google-signin-client_id" content="MY_CLIENT_ID">

我在页面上包含了此脚本:<script src="https://apis.google.com/js/platform.js"></script>

我有这个div呈现按钮: <div class="g-signin2" data-onsuccess="onSignIn"></div>

我的onSignIn函数如下所示:

function onSignIn(googleUser) {
  var id_token = googleUser.getAuthResponse().id_token;

  $('#google_token').val(id_token); //hidden form value
  $('#google-oauth').submit(); //hidden form
}
Run Code Online (Sandbox Code Playgroud)

隐藏的表单将提交到后端,在该后端使用令牌来检索用户的电子邮件地址和名称,然后创建用户帐户并登录。

我的问题是,如果用户已经登录,则Google将自动调用onSignIn函数,从而导致在加载页面时提交表单。有没有办法防止onSignIn函数被自动调用?

参考:https : //developers.google.com/identity/sign-in/web/sign-in

Ali*_*nan 5

尝试这个:

function onSignIn(googleUser) {
     var id_token = googleUser.getAuthResponse().id_token;

     var auth2 = gapi.auth2.getAuthInstance();
     auth2.disconnect();

     //if this did not had time to sign out put below lines in setTimeout to make a delay
     $('#google_token').val(id_token); //hidden form value
     $('#google-oauth').submit(); //hidden form
}
Run Code Online (Sandbox Code Playgroud)


Yam*_*man 5

获取用户信息后尝试退出,我尝试退出,但断开连接

function onSignIn(googleUser) {
    var profile = googleUser.getBasicProfile();
    var idToken = googleUser.getAuthResponse().id_token;

    gapi.auth2.getAuthInstance().disconnect().then(function () {

        //Do stuff here after the user has been signed out, you can still authenticate the token with Google on the server side

    }
}
Run Code Online (Sandbox Code Playgroud)


Flo*_*n D 0

在这里查看我的答案

我最终使用了自定义集成,它不会尝试自动登录(也允许我同时更改外观)