Facebook登录按钮不会调用回调函数

时间:2019-03-15 06:08:39

标签: javascript facebook facebook-javascript-sdk

我不确定我该怎么做。

首先有一个FB按钮,它出现在屏幕上,然后带我进入FB登录页面进行确认。

即使此按钮没有 onclick,它仍然带我进入登录窗口,但是我添加了onclick并定义了一个功能:

<div onclick="login();" class="fb-login-button" data-width="300" data-size="large" data-button-type="continue_with" data-auto-logout-link="false" data-use-continue-as="false" ></div>

该函数位于js文件中,并且为:

  function login()
      {
          console.log("connecting...."); 
                 FB.login(function(response) {
                    if (response.status === 'connected') {
                      console.log("connected");
                      testAPI();
                    } else {
                      console.log("not connected");
                    }
                  });

      }

什么也不会打印,即使我单击FB按钮甚至成功登录也不会打印“正在连接...”。 没有错误。

应该怎么做? 我想登录他,调用一个允许他进入的函数,然后提取他的详细信息。

2 个答案:

答案 0 :(得分:3)

您正在混合使用两种不同的概念,可以使用官方登录按钮,也可以使用JavaScript SDK的FB.login。登录按钮仅需要“ onlogin”并自动为您处理其他所有内容,如您在文档中所见:https://developers.facebook.com/docs/facebook-login/web/login-button/

如果要使用FB.login,请改用随机div(或任何HTML标记):

document.getElementById('loginBtn').addEventListener('click', () => {
    FB.login((response) => {
        if (response.authResponse) {
            //user just authorized your app
            document.getElementById('loginBtn').style.display = 'none';
        }
    }, {scope: 'email,public_profile'});
}, false);

更多信息:https://www.devils-heaven.com/facebook-javascript-sdk-login/

答案 1 :(得分:0)

使用内联代码是一种不好的做法,您需要为div分配一个ID或Class并针对它调用函数,例如:

<div class="test">Click me!</div>

$('div.test').click(function(){
    login();
});

希望这会有所帮助。