0

私のアプリケーションの1つでは、クライアント側のFacebook javascript apiを使用して、ユーザーのFacebookログインステータスを追跡しています。

すでにFacebookアプリケーションに接続しているユーザーがいますが、ユーザーはFacebookにログインしています。

これで、FB.getSession()を呼び出すと、nullが返されますが、FB.getLoginStatus()を呼び出すと、response.session...も返されません。

この動作はブラウザによって異なります。Chromeでは正常に機能しますが、Firefox 4では機能しません。FirefoxでCookieをクリアしても、期待どおりに機能しません。

このクライアント側のAPIは信頼されていますか、それともサーバー側のAPIを選択する必要がありますか?

コード:

window.fbAsyncInit = function() {
    FB.init({
        appId: '0000000000', 
        status: true, 
        cookie: true,
        xfbml: true
    });

    FB.getLoginStatus(function(response) {
      if (response.session) {
        // This block should have been called.
        alert('logged in')
      } else {
        // no user session available, someone you dont know
        alert('not logged in')
      }
    }, true);


    var session = FB.getSession(); //Must not return null...

};

何か案が?

4

2 に答える 2

0

非非同期アプローチを使用した後に機能しました。

コード

<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
    appId  : '00000000000',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true  // parse XFBML
});


$(function(){
    //var session = FB.getSession();

    alert(FB.getSession());
})

</script>

なぜそれが非同期アプローチで機能しなかったのか分かりません。

于 2011-05-01T09:00:22.240 に答える
0

FB.getSession()が初期化されていないからです。

Facebookが初期化されたときにFB.getSession()機能を起動するイベントをFB.getLoginStatusに追加して、非同期アプローチを使用することはできませんでした。

于 2012-09-19T09:27:22.547 に答える