我希望有人能为我阐明这一点,因为一段时间以来,这一直让我抓狂。
我有一个应用程序正在尝试读取用户提要。用户对此已给予足够的权限,如下所述。我确实得到了一个结果集,但结果集并不完整。
如果我使用Graph API Explorer应用程序以完全相同的权限运行相同的Graph API请求,如下文所述,我会得到完整而正确的结果。
我在下面详细介绍了这两个结果集。我将本例中的结果限制为2(因为查询中的前2个结果突出了这个问题)。但是,您可以通过删除限制或设置任何其他限制来复制此限制。
正如您所看到的,对于相同的权限集和两个请求的有效访问令牌,响应是完全不同的。我所知道的应用程序中丢失的类型数据与实际返回的数据之间的唯一区别是
1) 第一个缺失的结果是用户在朋友页面上发布的帖子2) 第二个缺失的结果是用户通过应用程序共享的数据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": "...."
}
}
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 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": "...."
}
}
当新内容被推送到提要时,提要结果几乎总是不同的。查看每次更新的时间:
- 图形浏览器:2012-12-03T16:40:24+0000
- 您的应用:2012-12-03T14:45:38+0000
您在图形资源管理器中获得的两个故事都是在您在应用程序中获得的故事之后两个小时。图形资源管理器本身构建在API上,不直接进行内部调用以获取结果。要检查这一点,您可以使用Firebug或Google Chrome检查器查看正在进行的AJAX调用。
两者之间应该没有区别。Explorer只是一个很好的测试工具,但在返回的结果方面没有任何"优势"。
对于这样变化的数据集,通过应用程序和图形资源管理器进行的调用之间的直接比较可能不是最好的选择,因为结果往往会有所不同。
在facebook.com上的真实提要和您通过API获得的版本之间也可能存在延迟。这可以解释您的呼叫之间的临时延迟,因为这个过时的视图没有"全局状态"(即:提要为每个人返回-4小时的结果):https://developers.facebook.com/docs/reference/api/
希望这能帮你解决问题。