Facebook登录按钮onlogin =“function”给出了ReferenceError

时间:2016-04-01 21:49:11

标签: javascript facebook facebook-javascript-sdk facebook-login

到目前为止,我已经设法在我的页面上实现了facebook登录按钮。 登录运行良好,但我想在登录成功后在我的login.js代码中调用一个函数。

我使用来自This link的onlogin将触发我的userLogin()函数。

我的问题是,当我登录到应用程序时,我得到了这个ReferenceError:

[ReferenceError:userLogin未定义--- sdk.js:1:1]

我不知道为什么会出现这个错误。

我的所有javascript代码都放在.js文件中,并包含在顶部。

相关代码:

userLogin()放在$(document).ready(function(){...});

// This function is called when someone finishes with the Login Button.
function userLogin () {
    console.log("it worked");
    FB.getLoginStatus(function(response) {
        statusChangeCallback(response);

    });

}

HTML代码,将触发该功能的按钮:

<body>
 <div id="fb-root"></div>
  <script src="login.js" type="text/javascript"></script>

  <div class="loginButton">
    <fb:login-button scope="public_profile,email" onlogin="userLogin();">
</fb:login-button>

  </div>

2 个答案:

答案 0 :(得分:3)

您的功能是在DialogInterface.OnClickListener范围内定义的,而不是在外部。

要使其在全球范围内可用,您可以在$(document).ready()

中执行此操作
login.js
  

注意: var userLogin; $(document).ready(function(){ userLogin = function(){ /* ... */ }; }); 可能干扰另一个可能使用相同名称的库的名称(如果全局定义的话)。为了避免这种问题,我建议你给它一个更多&#34;习惯&#34;名称,如userLogin

答案 1 :(得分:0)

该功能必须在窗口上定义。解决方案是:

// somewhere before the button is rendered
window.loginCallback = res => {
    // handle response logic
}

    <div
      className="fb-login-button"
      data-max-rows="1"
      data-size="large"
      data-button-type="continue_with"
      data-onlogin="loginCallback();"
    ></div>