-1

私のマスターページには、次のコードがあります。

<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() の前に呼び出されて、このエラー メッセージが表示される理由を教えてください。

4

1 に答える 1

0

問題は実際のテストであるように見えました。ローカルホストでテストするときに、ログインを使用できるようにプロジェクトを再構築する必要がありましたが、F5を使用してページを更新しただけで、問題が発生しました。理由は100%わかりませんが、変更を加えて実行することで回避しました。

于 2013-01-14T10:17:59.027 に答える