到目前为止,我已经设法在我的页面上实现了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>
答案 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>