javascript - FB.login() 没有被调用

标签 javascript facebook facebook-graph-api facebook-javascript-sdk

我已经设置了 sdk,按钮会触发 checkLoginState 函数,但 FB.login 不会被调用。我正在使用最新版本(v2.9)。我也尝试过使用 2.8。

我猜这与异步有关,但我不知道下一步该做什么。

代码:

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'xxxxxxxxxxx',
      status : true, 
      cookie : true, 
      xfbml      : true,
      version    : 'v2.8'
    }); 
  };

  (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>

<fb:login-button onlogin="checkLoginState();" show-faces="false" scope="email,public_profile" width="400"></fb:login-button>

<script type='text/javascript'>

    function checkLoginState() {
      FB.getLoginStatus(function(response) {
        statusChangeCallback(response);
      });
    }

    function statusChangeCallback(response) {
        if (response.status !== 'connected'){
            Facebook_login();
        }
        else{
            console.log(response);
        }
      }

    function Facebook_login() {

        FB.login(function (response) {  <--- debugger comes here
            if (response.status === 'connected') { <----- but not here :-(
                //do stuff
            }

        });
    }

最佳答案

登录按钮自行执行登录,使用该按钮时您不必自己调用FB.login

FB.login 适用于您想要使用您自己的链接/按钮来触发登录的情况。

<小时/>

而您调用它的方式,在异步方法的回调函数内,它很可能会被浏览器的弹出窗口阻止程序阻止。如果您使用 FB.login,那么您应该只在直接用户交互(即单击链接/按钮)时调用它,而不是将其嵌套到任何异步回调中。

关于javascript - FB.login() 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45053030/

相关文章:

ios - 登录到 Facebook 评论 iOS (swift) 没有响应

JavaScript Array join() 导致结果中出现空 (%00) 字符

javascript - Visual Studio Code 中的命令行/窗口

javascript - 将对象映射到字符串表达式

java - Facebook Android sdk 和 Facebook 应用重叠

android - 将 Facebook ProfilePictureView 转换为位图以在 ImageView 中使用

java - Json 结构如此不同,无法将其更改为 Java 对象

javascript - 从选择中删除选项并重新附加选定的更改

使用 passport-facebook 的 Facebook OAuth 安全性

android - 移动应用程序中的多个排行榜与 Facebook