如何使用Facebook Graph API上传活动图片?

10

我想知道如何使用Facebook Graph API向事件添加图片。我看过了这个问题,并尝试了一些变化,但都没有成功。官方文档似乎没有提到这个。

在这个特定项目中,我使用的是PHP,并查看了PHP SDK源代码,但没有任何帮助。使用https://graph.facebook.com/eventid/picture?metadata=1&access_token请求图片的元数据似乎不被识别,因此也没有帮助。

有没有人遇到过有关如何做到这一点的示例或文档?(无论使用哪种语言)

5个回答

14

虽然这是由Graph API支持的,但其文档质量较差。您需要将图像作为multipart附件发送在POST请求中。试试这个:

curl -F 'access_token=...' \
-F 'name=Test Event' \
-F 'description=The description' \
-F 'start_time=2012-09-01T12:00:00+0000' \
-F '@file.jpg=@/path/to/image.jpg' \
https://graph.facebook.com/me/events

那个事件应该有一张图片。

他们最近已经为PHP SDK添加了此功能

我已经fork了他们的python-sdk并添加了multipart支持,同时还添加了一个简单的put_event方法,它接受一个图片的url,以及通常的参数。


Michael,感谢你的Python分支,它运行得非常好。不过我在本地进行了一些小修复才使其正常工作--如果您没有指定'put_event'的'id'参数,则默认为'me/events',这会导致后面的代码中HTTPSConnection崩溃。应该是'/me/events'。请在有时间时更新您的分支。 - Shaun Budhram

2
在寻找问题时,我发现了以下可能会引起兴趣的链接。

http://wiki.developers.facebook.com/index.php/PHP

http://wiki.developers.facebook.com/index.php/Photos.upload

http://developers.facebook.com/docs/reference/rest/

在上一个链接中,检查“发布方法”和“仪表板API方法”。它们有用于视频和照片上传的方法。
照片:http://developers.facebook.com/docs/reference/rest/photos.upload 视频:http://developers.facebook.com/docs/reference/rest/video.upload --------------编辑---2010年5月21日,晚上8:58 IST---------------------
查看这个帖子,它展示了使用你提到的图形API在PHP中上传照片的代码。 使用Facebook的Graph API上传照片到相册 我希望这可以帮助你。
谢谢。

1
我看过那些页面,但它们并不是关于Graph API的。虽然旧API在未来一段时间内仍将得到支持,但我正在编写我的Web应用程序以使其持久运行而无需维护。因此,我想使用当前的API。我已经在许多其他任务中使用了Graph API,混合使用不同的API会使事情变得非常混乱。 - Thorarin
请检查我在编辑中添加的链接。还要检查这个新的轻量级Java Facebook API。也许你可以从中找到一些参考资料。http://restfb.com/谢谢。 - Parth

1

我曾经遇到过同样的问题,这段代码对我很有效:

// create the event
// ...

// upload the picture
$file = "pathtothefile";
$args[basename($file)] = '@' . realpath($file);
$data = $facebook->api('/'. $event_id, 'post', $args);

但有时我会遇到“(#324) 缺少或无效的图像文件”错误


0

这是一个使用FbGraph编写的示例,由Nov Matake在Ruby on Rails中编写。我花了很多时间来弄清楚如何为事件上传图片。我希望这可以帮助并节省其他人的时间。

me = FbGraph::User.me(ACCESS_TOKEN)
event = me.event!(
  :name => 'FbGraph test event',
  :start_time => 1.week.from_now.to_i,
  :end_time => 2.week.from_now.to_i,
  :picture => File.new("/home/jeetu/Desktop/my_birthday.png")
)

-1

看起来这是Graph API尚未支持的功能。官方文档中没有提到,试图将旧式API调用转换为Graph API也似乎不起作用。

关于这个问题,论坛上有一些人尝试过的讨论: http://forum.developers.facebook.com/viewtopic.php?id=56717

目前,似乎唯一的选择是使用旧的API(官方文档)。Paarth的答案提供了一些额外有用的链接,可以帮助你入门。然而,由于我的问题特别涉及到Graph API,所以答案(目前)是:无法完成。

如果支持事件图片上传到Graph API,我会更新这个答案。


图形 API 通过使用“source”参数来支持此功能。 - Zilverdistel

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