如何使用Facebook Graph API在照片中标记用户?

5
我尝试过:
$args = array(
  'access_token' => $access_token,
  'id' => $uid
);

$url = "https://graph.facebook.com/{$idPhoto}/tags";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$data = curl_exec($ch);

它返回了:

{"error":{"type":"QueryParseException","message":"Unknown path components: \/tags"}}

因为Facebook文档中没有提到,所以似乎不可能:

http://developers.facebook.com/docs/api#publishing

有人能否确认一下:最近上传的照片中不能标记用户吗?

3个回答

28

使用PHP Facebook Graph API一步上传图像并标记多个人:

$args = array(
  'message' => 'Message',
  'image'   => '@' . realpath($path_to_image),
  'tags'    => array(
     array(
      'tag_uid'=> $friend1_uid,
      'x'      => $x1,
      'y'      => $y1,
     ),
     array(
      'tag_uid' => $friend2_uid,
      'x'       => $x2,
      'y'       => $y2,
     ),/*...*/
   ),
);

$data = $facebook->api('/me/photos', 'post', $args);

$facebook是初始化的Facebook PHP SDK对象,$data ['id']是上传照片的ID。

注: 1.在初始化Facebook对象时必须设置fileUpload选项:

$facebook = new Facebook(array(
  /*..*/
  'fileUpload'  => true,
));
  1. 必须授予publish_stream权限

1
可以了!我很好奇,你是怎么想到使用'tag_uid'的?照片文档页面上说要使用'to'(适用于单个标签)https://developers.facebook.com/docs/reference/api/photo/。他们改变得太快了,以至于文档跟不上! - Carson
'y','x','n'和'y'是用来做什么的? - jpganz18
(x,y)是您上传的图像中标签的坐标。 - Andrius
有人能帮忙在Android上上传图片并标记朋友吗?我知道首先要上传照片,然后使用上传的ID标记朋友,但实际操作不确定。 - Mahantesh M Ambi
@Andrius 你知道这些坐标使用的单位是什么吗?图像跨度的分数?像素?从顶部还是底部和左侧还是右侧测量? - Johiasburg Frowell
@JohiasburgFrowell,我已经有一段时间没有使用它了,但我猜测这是像素。 - Andrius

2
目前,Facebook Graph API 没有设置标签的机制。
您可以使用旧的 REST API 中的 photos.addTag,您应该可以在这里下载:http://pearhub.org/get/facebook-0.1.0.tgz。如果有更好的链接,请告诉我。
从 Facebook 开发者的这篇文章http://developers.facebook.com/blog/post/371中可以看出,新的 API 很可能永远不会支持设置标签“让用户进行标记”。这对于希望集成标记的应用程序(如我的应用程序)来说是不幸的。

1

1
抱歉,在您提供的链接中没有关于标记某人的内容。我不需要检索数据,而是需要发布它。 - FR6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接