PHP Facebook图形API获取帖子评论与用户照片字段


PHP Facebook Graph API get posts comments WITH user photo field

当我得到一个帖子的评论

https://graph.facebook.com/v2.4/ POST_ID

/评论

我得到评论,这个人的名字(和id),但不是他们的头像。

要恢复他的个人资料图片,我必须每次都重复一个GET查询

https://graph.facebook.com/ USER_ID /图片?重定向= false

所以如果有150条评论,我做150个GET查询只是为了检索个人资料照片的URL…

页面加载时间有时长达30秒…

是否有可能在JSON中直接恢复所有评论的个人资料照片的url字段?

为什么首先需要检索个人资料图片的url ?你已经有了用户id,所以你可以直接使用https://graph.facebook.com/v2.4/{user_id}/picture作为src元素的CC_2属性值-它将重定向到Facebook的CDN上实际图像的正确位置。

或者您需要实际的图像url用于其他目的,在网页领域之外…?

在这种情况下,您可以使用API的字段扩展功能(因此您不需要批处理请求):

/post_id/comments?fields=message,from{name,picture}

这将为您提供评论的内容,以及发表评论的用户的姓名和个人资料图片URL。(如果您需要更多的字段,您必须将它们添加到列表中。)

这可以通过批处理请求完成,但是有点困难:

curl -k '
-F 'access_token={YOUR_USER_ACCESS_TOKEN}' '
-F 'include_headers=false' '
-F 'batch=[
  {
    "method":"GET",
    "name":"postcomments",
    "relative_url":"{post_id}?fields=comments.fields(from.fields(id)).limit(50)",
  }, 
  {
    "method":"GET",
    "name":"pics1",
    "relative_url":"?ids={result=postcomments:$.comments.data.[0:50:1].from.id}&fields=id,name,picture"
  }]' '
https://graph.facebook.com

用有效的post id交换{post_id},用实际的User Access Token交换{YOUR_USER_ACCESS_TOKEN}

注意,/?ids=端点一次只能用于50个id,这意味着您需要对齐

的数量
  {
    "method":"GET",
    "name":"pics1",
    "relative_url":"?ids={result=postcomments:$.comments.data.[0:50:1].from.id}&fields=id,name,picture"
  }

,在第一个查询(limit/50)中设置的数字为limit。此外,你必须调整[0:50:1]部分,使其反映实际的"位置"。