0

次の簡単な Facebook 統合を実行しようとしています。

以前に承認されたアプリのステータスを読み取りたいだけで、接続されているか承認されていないか結果を処理したい.

しかし、エラーが発生していますFB.getLoginStatus() called before calling FB.init().init私が を呼び出している間に終了しなかったと仮定すると、これは理にかなっていgetLoginStatusます。

非同期動的js参照を追加せずにこれを解決するにはどうすればよいですか?

<script language="javascript">
    $(document).ready(function () {

        window.fbAsyncInit = function () {
            FB.init({
                appId: 'myappid', // App ID
                status: true, // check login status
                cookie: true, // enable cookies to allow the server to access the session
                xfbml: true  // parse XFBML
            });
        };


        FB.getLoginStatus(function (response) {
            alert(response.status);
            if (response.status == "connected") {
                $("#lkLogin").css("display", "none");
                $("#spUser").css("display", "inline");

                $("#spUser").html(response.name);

            } else if (response.status == "not_authorized") {
                $("#lkLogin").css("display", "inline");
                $("#spUser").css("display", "none");
            }
        });

    });
</script>

<a href="#" id="lkLogin" style="display:inline;">Facebook Login</a>
<span id="spUser" style="display:none;"></span>
4

2 に答える 2

0

FB.getLoginStatus()を呼び出した直後に関数を呼び出す必要がありますFB.init()。はinit()非同期と呼ばれるためです。つまり、が呼び出されるFB前に、が初期化されていないということです。getLoginstatus()したがって、このように同期と呼ぶ必要があります-

window.fbAsyncInit = function () {
    FB.init({
         appId: 'myappid', // App ID
         status: true, // check login status
         cookie: true, // enable cookies to allow the server to access the session
         xfbml: true  // parse XFBML
     });

     // call FB.getloginstatus function here
};
于 2013-07-26T17:20:04.333 に答える
-2

これはそれを行う必要があります:

<script language="javascript">


            window.fbAsyncInit = function () {
                FB.init({
                    appId: 'myappid', // App ID
                    status: true, // check login status
                    cookie: true, // enable cookies to allow the server to access the session
                    xfbml: true  // parse XFBML
                });
            };

    $(document).ready(function () {
            FB.getLoginStatus(function (response) {
                alert(response.status);
                if (response.status == "connected") {
                    $("#lkLogin").css("display", "none");
                    $("#spUser").css("display", "inline");

                    $("#spUser").html(response.name);

                } else if (response.status == "not_authorized") {
                    $("#lkLogin").css("display", "inline");
                    $("#spUser").css("display", "none");
                }
            });

        });
    </script>

    <a href="#" id="lkLogin" style="display:inline;">Facebook Login</a>
    <span id="spUser" style="display:none;"></span>
于 2013-07-26T15:08:58.347 に答える