私のマスターページには、次のコードがあります。
<body>
<div id="fb-root">
</div>
<script>
window.fbAsyncInit = function () {
FB.init({
appId: "xxx",
channelUrl: "/xd_receiver.htm",
xfbml: false
});
};
</script>
....
</body>
別の .js ファイルには、次のような Facebook コードがあります。
var Facebook = function () {
var pub = {};
var priv = {};
pub.Login = function () {
return priv.FacebookLogin();
};
priv.FacebookLogin = function () {
FB.login(function (response) {
if (response.authResponse) {
FB.api('/me', function (response) {
console.log("you are logged in");
return response;
});
}
});
};
return pub;
};
今私の問題は、このようなコードを使用して、FacebookLogin関数を呼び出すLoginを呼び出すと、initがfbのタグの直後にあるべき場所にあるにもかかわらず、initの前にログインが呼び出されたというコンソールメッセージが返されることです。FB.login のすぐ上に init clal を配置することをテストしたところ、再び機能したため、プレースメットに問題があります。以前は、js ファイル (facebook 関数を含む) をタグ内にリンクしていましたが、init スクリプトの直後にも配置しようとしましたが、同じエラーが発生しました。(facebook関数の呼び出しは、にリンクされているjsファイルにありますが、それは問題ですか?)
FB.login() が FB.init() の前に呼び出されて、このエラー メッセージが表示される理由を教えてください。