Graph API Explorer App和我的应用程序之间的结果集的差异

时间:2012-12-04 10:34:48

标签: api facebook-graph-api facebook-stream-story

我希望有人可以为我揭开这一点,因为它让我疯狂了一段时间。

我有一个试图读取用户Feed的应用程序。用户已经为此提供了足够的权限,如下所述。我确实得到了一个结果集,但结果集并不完整。

如果我使用Graph Api Explorer应用程序运行相同的Graph API请求,并具有完全相同的权限,如下所示,我将获得完整且正确的结果集。

我在下面详述了两个结果集。我已将此示例中的结果设置为2(因为查询中的前2个结果是突出显示此问题的结果)。但是,您可以通过删除限制或设置任何其他限制来复制此内容。

正如您所看到的,使用相同的权限集和两个请求的有效访问令牌,响应完全不同。我所知道的应用程序中缺少的类型数据与实际返回的数据之间的唯一差异是

1)第一个缺失的结果是用户发布到朋友页面 2)第二个缺失的结果是用户通过app共享的数据 3)我的应用程序返回的所有结果都是我在我自己的'时间轴/墙'上发布的帖子(无论现在提到什么

我的应用程序(即使权限与Graph Api Explorer应用程序相同)会不会返回这两种类型的帖子吗?

非常感谢所有帮助和建议。

图表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": "...."
  }
}

图表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": "..."
  }
}

图表Api Explorer的权限

{
  "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": "...."
  }
}

1 个答案:

答案 0 :(得分:-1)

随着新内容被推送到Feed,Feed结果几乎总是不同的。查看您所拥有的每次更新的时间:

  • Graph Explorer :2012-12-03T16:40:24 + 0000
  • 您的应用:2012-12-03T14:45:38 + 0000

您在图表资源管理器中获得的这两个故事都是在您的应用程序中获得的故事之后两个小时。 Graph Explorer本身是基于API构建的,不会直接进行内部调用来获取结果。要检查这一点,您可以使用Firebug或Google Chrome检查器查看正在进行的AJAX调用。

彼此之间应该没有区别。资源管理器只是一个很好的测试工具,但在返回的结果方面没有任何“优势”。

对于像这样更改的数据集,通过您的应用程序进行的调用与Graph Explorer之间的直接比较可能不是最佳选择,因为结果通常会有所不同。

facebook.com上的真实Feed与您通过API获得的版本之间可能存在延迟。这可以解释您的通话之间的暂时延迟,因为这个过时的视图没有“全局状态”(即:Feed会为每个人返回-4小时的结果):https://developers.facebook.com/docs/reference/api/

希望这有助于解决您的问题。