我正在使用Facebook Graph API来获取用户graphPath: me/albums
的所有照片,并在时间轴照片专辑中找到奇怪的内容。
照片存在于Facebook上的时间轴相册中,但未从API调用graphPath/{timeline_photos_album_id}/photos
返回,或者返回的照片数量较少。
有什么问题?
日志:
调用相册graphPath: me/albums
:
.....
{
"can_upload" = 0;
count = 3; !!!!!!!!!!!
"created_time" = "2013-06-18T10:43:27+0000";
description = cool;
from = {
id = 100006100533891;
name = "Mike Mike";
};
id = 1387760311437307;
link = "https://www.facebook.com/album.php?
fbid=1387760311437307&id=100006100533891&aid=1073741829";
name = "Timeline Photos";
privacy = everyone;
type = wall;
"updated_time" = "2013-06-18T10:47:53+0000”;
},
.....
致电专辑照片graphPath/{timeline_photos_album_id}/photos
:
{
data = (
);
}
答案 0 :(得分:3)
不幸的是"it is not a bug, it is by design"。这个设计很糟糕!
答案 1 :(得分:2)
我尝试了以下(使用“user_photos”权限)并且它可以工作:
为我的用户获取相册照片计数:
https://graph.facebook.com/me/albums?fields=id,count&access_token={access_token}
结果是
{
"data": [
{
"id": "{album_id}",
"count": 161,
"created_time": "2010-11-05T15:41:42+0000"
},
....
}
然后查询此相册的照片:
https://graph.facebook.com/{album_id}/photos?fields=id&limit=500&access_token={access_token}
结果是
{
"data": [
{
"id": "{photo_id1}",
"created_time": "2013-12-29T09:59:52+0000"
},
{
"id": "{photo_id2}",
"created_time": "2013-12-17T10:40:26+0000"
},
...
}
我在结果中计算了正确数量的161个ID。所以一切似乎都运转正常。
您也可以通过FQL测试:
https://graph.facebook.com/fql?q=select+pid+from+photo+where+album_object_id+=+{album_id}+limit+1000&access_token={access_token}
答案 2 :(得分:1)
最近FB API发生了变化,您是否尝试在API的结果中添加要返回的字段?在过去,API总是返回“标准字段”,最新的总是必须提供您希望在结果中返回的字段列表,例如....fields=name,id...
答案 3 :(得分:1)
我认为您错过了访问令牌中的user_photos
权限。终点:
当我尝试使用Graph API资源管理器从我的时间轴相册中检索照片时,/{timeline_photos_album_id}/photos
对我来说非常合适。并且,我认为没有必要提供这些字段。
我建议您使用Graph API Explorer尝试相同的操作。只需按右上角的获取访问令牌按钮,然后查看user_photos
权限即可测试您的请求。
如果结果较差,您可以使用分页选项limit
和offset
来尝试查询。与正常情况相比,这有时会返回更多结果(在文档上没有任何相关内容,仅仅是我的个人经验)。类似的东西:
{timeline_photo_album_id}/photos?limit=500&offset=0
但是,正如你所指出的那样,API也有一些奇怪的事情发生。看看this article。本文将其称为API的预期行为!