3

我希望有人可以为我阐明这一点,因为它已经让我发疯了一段时间了。

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

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

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

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

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

我的应用程序(即使权限与 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": "...."
  }
}

来自 Graph Api Explorer App 的结果集

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

1 回答 1

-1

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

  • 图资源管理器:2012-12-03T16:40:24+0000
  • 您的应用程序:2012-12-03T14:45:38+0000

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

一个和另一个之间应该没有区别。Explorer 只是一个很好的测试工具,但在返回结果方面没有任何“优势”。

对于像这样变化的数据集,通过您的应用程序和图形资源管理器进行的调用之间的直接比较可能不是最佳选择,因为结果通常会有所不同。

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

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

于 2012-12-04T13:24:12.600 回答