Facebook图形api.从相册中获取照片

Iva*_*lov 10 api json facebook facebook-graph-api

请帮我向Facebook api提出正确的请求.现在我有:

https://graph.facebook.com/me/albums?fields=photos
Run Code Online (Sandbox Code Playgroud)

结果我得到了非常大的Json,有很多不必要的信息.我试着这样做:

https://graph.facebook.com/me/albums?fields=photos?fields=source,name,id
Run Code Online (Sandbox Code Playgroud)

或者像这样:

https://graph.facebook.com/me/albums?fields=photos&fields=source,name,id
Run Code Online (Sandbox Code Playgroud)

但是图形api资源管理器,返回了相同的大响应,或者我发现了一个错误.任何想法如何只用必要的信息做更紧凑的响应?

Ser*_*pez 29

实际上,有一种更好的方法来实现这一点,嵌套请求

将相册作为参数传递,然后从您想要的连接照片中过滤字段,例如在这里我从相册和照片中获得了我需要的所有内容,此结果也可能受限

me?fields=albums.fields(id,name,cover_photo,photos.fields(name,picture,source))
Run Code Online (Sandbox Code Playgroud)


Jui*_*ter 10

您只能使用fields对象存在的属性.

通过向下一个URL发出GET请求,您将只获得专辑ID列表:

https://graph.facebook.com/me/albums?fields=id&access_token=...
Run Code Online (Sandbox Code Playgroud)

通过FQLalbum表上运行下一个查询可以实现相同:

SELECT aid FROM album WHERE owner=me()
Run Code Online (Sandbox Code Playgroud)

实际上albums连接user并不真正包含photo对象列表但是album(有photos连接).因此,要获得用户拥有的照片,您需要遍历所有对象并获取每张专辑的照片.您可以再次使用fields参数来限制结果数据.如果使用批处理请求,这可以更快地完成.

或者FQL可以这样做(两个表photoalbum涉及):

SELECT pid FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner=me())
Run Code Online (Sandbox Code Playgroud)