代码之家  ›  专栏  ›  技术社区  ›  Manish

网页包Facebook登录按钮错误

  •  0
  • Manish  · 技术社区  · 9 年前

    <script>
        window.fbAsyncInit = function() {
            FB.init({
                appId            : 'xxxxxx',
                autoLogAppEvents : true,
                xfbml            : true,
                version          : 'v2.10'
            });
            FB.AppEvents.logPageView();
        };
    
        (function(d, s, id){
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) {return;}
            js = d.createElement(s); js.id = id;
            js.src = "//connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));
    
    </script>
    

    我还有一个部门:

    <div class="fb-login-button btn-fb"
     data-max-rows="1"
     data-size="large"
     data-button-type="continue_with"
     data-show-faces="false"
     data-auto-logout-link="false"
     data-use-continue-as="false"
     scope="public_profile, email"
     onlogin="checkLoginState()">
    </div>
    

    当我部署时,我可以看到FB对话框,但它给出了一个错误:

    "sdk.js:110 Uncaught ReferenceError: checkLoginState is not defined"
    

    我猜想checkLoginState需要暴露于全局范围才能修复此错误。所以我试过了

    window.checkLoginState = function() {
    ...
    }
    

    根据我的测试,我发现只有在checkLoginState函数中添加另一个JS调用时,才会出现这种行为,即:

    window.checkLoginState = function () { 
      console.log("checkLoginState >>>"); 
      socialAuth.checkFBLoginStatus(); 
    }; 
    

    如果我删除 socialAuth.checkFBLoginStatus() checkLoginState 已找到。

    我正在寻求帮助以克服此错误。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Manish    9 年前

    我能让它工作的唯一方法是将函数放在同一个JS文件中,而不是将它们放在单独的文件中。

    我的socialAuth JS文件也在调用另一个JS文件中的函数。我在socialAuth中调用了所有这些函数,然后它就工作了。

    推荐文章