3

しばらくの間私を怒らせてきたので、誰かが私のためにこれに光を当ててくれることを願っています.

ユーザー フィードを読み取ろうとするアプリケーションがあります。以下に記載されているように、ユーザーはこれに対して十分な許可を与えています。結果セットは返されますが、結果セットは完全ではありません。

以下に記載されているように、Graph Api Explorer アプリを使用してまったく同じアクセス許可で同じ Graph API 要求を実行すると、完全で正しい結果セットが返されます。

両方の結果セットの詳細を以下に示します。この例では、結果の制限を 2 に設定しました (クエリの最初の 2 つの結果がこの問題を強調しているため)。ただし、制限を削除するか、他の制限を設定することで、これを再現できます。

ご覧のとおり、アクセス許可セットが同じで、両方の要求に有効なアクセス トークンがある場合、応答はまったく異なります。アプリにない型データと実際に返されるデータの唯一の違いは、

1) 最初の不足している結果は、ユーザーによる友人ページへの投稿です 2) 2 つ目の不足している結果は、アプリを介してユーザーによって共有されたデータです 3) My App によって返されたすべての結果は、自分の「タイムライン」で私が作成した投稿です/Wall' (それが現在言及されているものは何でも)

私のアプリ (アクセス許可は Graph Api Explorer アプリと同じですが) がこれら 2 種類の投稿を返さない理由はありますか?

すべてのヘルプと提案に感謝します。

グラフ API クエリ

me/feed?fields=id,comments,type,likes,story_tags,with_tags,to

マイアプリの結果セット

{
  "data": [
    {
      "id": "XXXXXXXX_101523YYYY25626", 
      "comments": {
        "count": 0
      }, 
      "type": "link", 
      "created_time": "2012-12-03T16:04:33+0000"
    }, 
    {
      "id": "XXXXXXXXX_570424YYYY73312", 
      "comments": {
        "count": 0
      }, 
      "type": "link", 
      "created_time": "2012-12-03T14:45:38+0000"
    }
  ], 
  "paging": {
    "previous": "....", 
    "next": "...."
  }
}

Graph Api Explorer アプリからの結果セット

{
  "data": [
    {
      "id": "XXXXXXXX_10152YYYYY50626", 
      "comments": {
        "count": 0
      }, 
      "type": "status", 
      "story_tags": {
        "64": [
          {
            "id": "ZZZZZZZZZZ", 
            "name": "Name", 
            "offset": 64, 
            "length": 12, 
            "type": "user"
          }
        ]
      }, 
      "created_time": "2012-12-03T16:46:41+0000"
    }, 
    {
      "id": "XXXXXXX_1015230YYYYYYY626", 
      "comments": {
        "count": 0
      }, 
      "type": "photo", 
      "likes": {
        "data": [
          {
            "name": "Name", 
            "id": "ZZZZZZZZ"
          }, 
          {
            "name": "Name, 
            "id": "ZZZZZZZZ"
          }
        ], 
        "count": 2
      }, 
      "story_tags": {
        "0": [
          {
            "id": "ZZZZZZZZZ", 
            "name": "Name", 
            "offset": 0, 
            "length": 13, 
            "type": "user"
          }
        ]
      }, 
      "created_time": "2012-12-03T16:40:24+0000"
    }
  ], 
  "paging": {
    "previous": "......", 
    "next": "......"
  }
}

マイアプリの権限

{
  "data": [
    {
      "installed": 1, 
      "read_stream": 1, 
      "email": 1, 
      "read_insights": 1, 
      "user_birthday": 1, 
      "user_relationships": 1, 
      "user_photos": 1, 
      "user_videos": 1, 
      "user_photo_video_tags": 1, 
      "user_about_me": 1, 
      "user_status": 1, 
      "friends_about_me": 1
    }
  ], 
  "paging": {
    "next": "..."
  }
}

Graph API エクスプローラーのアクセス許可

{
  "data": [
    {
      "installed": 1, 
      "read_stream": 1, 
      "email": 1, 
      "read_insights": 1, 
      "user_birthday": 1, 
      "user_relationships": 1, 
      "user_photos": 1, 
      "user_videos": 1, 
      "user_photo_video_tags": 1, 
      "user_about_me": 1, 
      "user_status": 1, 
      "friends_about_me": 1
    }
  ], 
  "paging": {
    "next": "...."
  }
}
4

1 に答える 1

-1

新しいコンテンツがフィードにプッシュされると、フィードの結果はほとんど常に異なります。あなたが持っている各アップデートの時間を見てください:

  • グラフ エクスプローラー: 2012-12-03T16:40:24+0000
  • あなたのアプリ: 2012-12-03T14:45:38+0000

Graph Explorer で取得する両方のストーリーは、アプリで取得するストーリーの 2 時間後です。Graph Explorer 自体は API に基づいて構築されており、結果を取得するために直接内部呼び出しを行うことはありません。これを確認するには、Firebug または Google Chrome インスペクターを使用して、行われている AJAX 呼び出しを確認します。

どちらかに違いがあってはなりません。エクスプローラーは、物事をテストするための優れたツールですが、返される結果に関して「利点」はありません。

このように変化するデータ セットの場合、結果が異なることが多いため、アプリと Graph Explorer を介して行われた呼び出しを直接比較することは、おそらく最良の選択肢ではありません。

また、facebook.com の実際のフィードと API を介して取得するバージョンとの間に遅延が生じる場合もあります。この古いビューには「グローバルな状態」がないため、呼び出し間の一時的な遅延を説明できます (つまり、フィードはすべてのユーザーに対して -4 時間の結果を返します): https://developers.facebook.com/docs/リファレンス/API/

これが問題の解決に役立つことを願っています。

于 2012-12-04T13:24:12.600 に答える