单击按钮启动 Google 登录

Posted

技术标签:

【中文标题】单击按钮启动 Google 登录【英文标题】:Initiate Google sign in on button click 【发布时间】:2015-12-13 22:47:24 【问题描述】:

您好,我正在使用 google api 登录我的网络应用程序。现在它工作正常。但问题是当我进入我的登录页面时 sigin 会自动启动。但我不想那样。我希望用户先单击登录按钮,然后该过程将开始。

我正在使用下面的按钮

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

和google log in 参考。

【问题讨论】:

您添加了Sign Out Button。几个月前我尝试使用google-signin,效果很好。我猜您在尝试此操作时已登录到您的 Google 帐户。如果是这种情况,您应该先注销然后尝试。 正如我所说,它适用于我当前的流程。但我不希望用户在之前登录时自动登录。我想在用户单击按钮时开始流程。如果在任何情况下,当他被重定向到登录或退出的登录页面时,他将不得不再次单击登录按钮:)。我在后端使用弹簧安全,所以我的要求有点奇怪,但就是这样:(。@thegauravmahawar 这只是一个“可能”,但是如果你可以在什么时候调用sign out function;正如您所说-“..我想在用户单击按钮时开始流程”。那么当用户单击按钮时,您是否可以先调用sign out function。我从未尝试过,所以这只是一个猜测。无论如何让我知道:) 这是个好主意,如果用户登录,我将注销用户@thegauravmahawar 让我试试 我已尝试注销。但似乎没有错误,但用户没有退出@thegauravmahawar 【参考方案1】:

使用“attachClickHandler”启动 Google 登录。

<script src="https://apis.google.com/js/client:platform.js?onload=init" async defer></script>
<script>
   function init() 
        gapi.load('auth2', function() 
            auth2 = gapi.auth2.init(
                client_id: '*************.apps.googleusercontent.com',
                cookiepolicy: 'single_host_origin',
                scope: 'profile email'
            );
            element = document.getElementById('glogin');
            auth2.attachClickHandler(element, , onSignUp, onFailure);
        );
    
    function onSignUp(googleUser) 
      var profile = googleUser.getBasicProfile();
    
</script>

【讨论】:

感谢分享!以下是attachClickHandler 上的官方文档,供其他可能好奇的人参考:developers.google.com/identity/sign-in/web/… 能否通过添加为 glogin 创建 google 按钮的代码来完成示例【参考方案2】:

据我所知,最好的方法是使用 Java Script 登录 google。

使用

script type="text/javascript">
      (function() 
       var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
       po.src = 'https://apis.google.com/js/client.js?onload=onLoadCallback';
       var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
     )();
</script>

初始化 js 。最后调用下面的方法来登录用户

function login() 

  var myParams = 
    'clientid' : 'YOUR_CLIENT_ID.apps.googleusercontent.com', //You need to set client id
    'cookiepolicy' : 'single_host_origin',
    'callback' : 'loginCallback', //callback function
    'approvalprompt':'force',
    'scope' : 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read'
  ;
  gapi.auth.signIn(myParams);

通过使用它,我能够解决这个问题。现在用户需要点击登录才能登录

【讨论】:

你能告诉我如何通过这个过程获取谷歌数据吗?我正在使用回调函数获取数据,但我收到此错误“未找到名为“onGoogleLoginSuccess”的回调函数”。 @NayyarJamal loginCallback 在此处提供您的方法名称,该方法将使用所有值调用,这意味着您的函数错误或无法从此页面访问您的函数 嗨,abdullah,你能分享谷歌登录的完整代码吗? @hey 对不起,我忘记了该 ID 的密码:/ 现在我正在使用这个

以上是关于单击按钮启动 Google 登录的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 游戏强制登录

使用firebase google身份验证单击登录按钮时总是会自动登录,而没有选择以其他用户身份登录的选项

在Google登录页面输入密码时出现问题

Google+ 登录将用户注销

无法登陆Google,与Google服务器通信时出现问题,怎么回事?

与Google服务器通信时出现问题?