首页 > 解决方案 > 谷歌注册不适用于第一次点击元素,但之后工作正常。为什么?

问题描述

您好,我正在使用 google api 登录我的网络应用程序。它工作正常。但问题是 sigin 在我的应用程序中是自动的,但对于注册,我想在用户检查条款和条件后启动该过程,并且该过程将开始。

下面是JS代码:

var googleUser = {};
var auth2;
var startApp = function() {
    gapi.load('auth2', function(){
    
        auth2 = gapi.auth2.init({
            client_id: 'XXXXXX',
                
        });
        $("body").on("click", ".googlesignin", function(e){
            
            if($('#terms').is(":checked")){
                termsvalue='1';
                $("#termsValidation").hide();
                $("#termsValidation").attr("data-hint", $("").text()); 
                attachSignup(document.getElementById("googlesignin"));
            }
            else
            {
                e.preventDefault();
                termsvalue='';
                $("#termsValidation").show();
                $("#termsValidation").attr("data-hint", "Please agree by clicking checkbox");
                return false;
            }
        });
        
    });
};



function attachSignup(element) {  

    auth2.attachClickHandler(element, {},
        function(googleUser) { 
            var profile = googleUser.getBasicProfile();
            console.log(googleUser.getAuthResponse().id_token);
            var googleurl = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=" + googleUser.getAuthResponse().id_token
             $.getJSON(googleurl, function(result){
                $("#rfirstname").val(result.given_name);
                $("#remail").val(result.email);
                $("#googlePicture").val(result.picture);
                $("#google_id").val(result.sub);
                    
            });
            
        }, function(error) {
        parsed_error = JSON.stringify(error, undefined, 2);
        parsed_error = JSON.parse(parsed_error); 
          if(popup_closed_by_user!='popup_closed_by_user'){
            alert(popup_closed_by_user);
          }   
        });
  };

  startApp();

这是我的html:

<html>
<head>
<meta name="google-signin-client_id" content="XXXXXX">
<script src="https://apis.google.com/js/api:client.js"></script>
</head>
<body>
<div>
    <input type="checkbox" id="terms">
    <div id="googlesignin" class="googlesignin"><img alt="" src="google.png" style="vertical-align: initial;"></div>
</div>
</body>
</html>

第一次点击它不起作用,但之后它工作正常。需要帮忙。提前致谢。

标签: javascriptjquerygoogle-signin

解决方案


我建议尝试评论最后一行startApp并在加载jQuery时添加下面的钩子..像这样,希望这会有所帮助

  // startApp();
  
  (function($){
    $(document).ready(function(){
      startApp();
    }); // - end DOCREADY
  })(jQuery);

推荐阅读