2

数回に 1 回、Facebook API への呼び出しが完了していません (または行われていない可能性さえあります)。たとえば、私のアプリも使用しているユーザーの友達の数を数えていますが、これは決して計算されないようです。この問題を調査しようとしましたが、Chrome コンソールにエラーはありません。このような動作に遭遇したことがあり、それを修正する方法を知っていますか?

編集

ここにいくつかの詳細があります。

error_code 190
error_msg Error validating access token: The session is invalid because the user logged out or because auth.expireSession was invoked

ポイントは、あるユーザーとしてログアウトしてから、別のユーザーとしてログインすることです。Facebookがログアウトしたユーザーとして扱うのはなぜですか? さらに、ページを更新すると、すべてが機能します。

EDIT2

これはいくつかのコード スニペットです。

function facebookInit(config) {
  Config = config;

  FB.init({
    appId: Config.appId,
    xfbml: true,
    status: true,
    cookie: true,
    channelUrl:
      window.location.protocol + '//' + window.location.host + '/channel.html'
  });
  FB.Event.subscribe('auth.sessionChange', handleSessionChange);
  FB.Canvas.setSize();

  // ensure we're always running on apps.facebook.com
  if (window == top) { goHome(); }
}


window.fbAsyncInit = function() { 
    facebookInit({{ js_conf|safe }}) 
    afterSDK()  
};

ここで問題が発生します。

var query = "SELECT '' " +
        "FROM user " +
        "WHERE is_app_user = \"1\" AND " +
              "uid IN (SELECT uid2 " +
                      "FROM friend WHERE uid1 = {{ user.user_id }})"
FB.api({'method': 'fql.query', 'query': query}, 
       function(response){

このコードはafterSDK()関数内で呼び出されます。アプリを使用している友達の数ではなく、応答がエラーになる場合があります。

4

1 に答える 1

1

これを突き刺してみましょう。

問題は、ユーザーをログアウトし、別のユーザーにログインしているためだと思います。Facebook が他のユーザーがログアウトしたことを検出せず、同一人物であると見なすために、問題が発生している可能性があります。これにより、その問題が解決される場合があります。

FB.logout(function(response) {
  // user is now logged out
});

それを実行してユーザーがログアウトしていることを確認してから、そこから移動してみてください

うまくいけば、これは少し役に立ちます。

フェイスブックのログアウト方法はこちら

セッションの更新に関するこの以前の SO の質問を見ることもできます(ただし、PHP にあり、同等の JS はわかりません)。

于 2011-05-24T20:44:53.133 に答える