【问题标题】:Given a URL of an image, how do I upload that image to the Facebook user's album? [duplicate]给定图片的 URL,我如何将该图片上传到 Facebook 用户的相册? [复制]
【发布时间】:2012-01-22 10:46:41
【问题描述】:

可能重复:
Upload photo to users profile from photo URL, not input file field

我有 access_token。它具有publish_stream 权限。

好的,现在我想将图像上传到我在 Facebook 上的默认应用的相册。该图像托管在我的 S3.amazon.com 上。 (但出于示例目的,让我们使用这个链接:http://i.imgur.com/Ptyzk.jpg

如何将此 imgur 图片上传到我的应用相册? (Facebook 上的文档很奇怪,我不懂 PHP)。

【问题讨论】:

  • 当前答案有什么问题?

标签: image facebook-graph-api facebook


【解决方案1】:

上传照片到“应用相册”有两种方式(其实第一个可能你更感兴趣)。

选项 1: Uploading Photos to the Graph API via a URL

将图像托管在 Amazon S3 或类似服务上的应用程序开发人员可以将 S3 URL 直接传递到 Facebook,而无需将文件下载到他们的应用程序服务器,然后再将其上传到 Facebook。这可以提高性能并降低开发人员的成本。

要实现这一点,您需要向下一个 URL 发出 POST 请求(或带有参数 method=postGET):

https://graph.facebook.com/me/photos?
       access_token=...&url=http%3A%2F%2Fi.imgur.com%2FPtyzk.jpg

http://i.imgur.com/Ptyzk.jpg 的 url 编码形式是 http%3A%2F%2Fi.imgur.com%2FPtyzk.jpg(如果你使用 URL 参数传递它,你只需要对 url 进行编码,如果你使用 post-data 传递它,则不能编码)。

photo object documentation 所述,通过将照片发布到https://graph.facebook.com/USER_ID/photos

照片将发布到为您的应用创建的相册中。如果您的应用尚不存在,我们会自动为您的应用创建相册。所有以这种方式上传的照片都将被添加到同一个相册中。

选项 2:上传图片数据

您只需向http://graph.facebook.com/me/photos 发出POST 请求(请参阅Create Photos section of user object documentation)。

唯一需要的参数是source,即multipart/form-data编码文件,您可以将其下载到临时文件并稍后上传,或者将其流式传输到Graph API(取决于您用于实现此功能的技术)

有几个示例如何上传照片(PHP 以外的语言):

更新: 目前还不清楚您希望将照片发布到用户相册还是应用程序相册(问题的titlebody 对此相反)。如果要将其发布到用户的相册,则需要将 me 替换为要上传照片的相册的 id。否则使用me(当前用户)或其他用户id(这将需要使用application access_token)。

【讨论】:

  • 这是正确的!选项 1 是我一直在寻找的。你写了一个完美的答案,谢谢!我希望我能给你赏金,但问题已经结束了。我怎么给你赏金?如果你重新打开这个,我可以给你赏金
  • @TIMEX,如果这个问题将被重新打开或者它的答案与其他问题合并,如果你愿意,你可以do it manually ;)
【解决方案2】:

本教程正是这样做的:

https://developers.facebook.com/blog/post/498/

您可以选择要将图片上传到哪个相册。

如果您想以更通用的方式执行此操作,Facebook API 会告诉您使用 sourcemessage 参数向 ALBUM_ID/photos 发出 POST 请求。请注意,source 必须是 multipart/form-data 类型。

更多详情https://developers.facebook.com/docs/reference/api/album/

【讨论】:

  • POST 参数是什么?因为我在发送 POST 请求时收到“需要上传文件”
  • 顺便说一下,本教程显示了一个带有 ACTION 到 facebook url 的
    。那不是我想要的。我想使用我的后端上传到 Facebook
  • 更新的答案更通用并链接到文档
【解决方案3】:

如果您想将照片上传给您应用的用户,我认为大部分答案都是正确的。但据我了解,您希望将其上传到您应用的关联相册。为此,您应该获取应用相册的 ID,然后才能向其发布图片,例如:

$facebook->api('album_id', 'POST', array(...

要获取专辑的 ID,请转到 Graph API explorer 并执行 GET 到:/your_app_id/albums(将 your_app_id 替换为您的实际应用 ID)。这应该会为您提供有关您的应用相册的所有详细信息。比使用您首选的 SDK(JS、PHP 等)执行 Graph API POST 请求,数组包含图片源和标题(这是强制性的)到上述地址。

注意:相册应用程序连接已被弃用,并将于 2012 年 3 月 1 日被删除。在此文档末尾阅读更多信息http://developers.facebook.com/docs/reference/api/application/

【讨论】:

  • 实际上将图像发布到/me/photos 会将它们添加到应用程序相册(如果相册不存在则创建它)
  • @juicy 你能给我一个链接说明这一点,因为我真的认为你错了。 /me/photos 是当前登录用户的路径。我可以提供参考:link 阅读此内容:“此外,还有一个特殊标识符 me 指代当前用户。因此 URL graph.facebook.com/me 返回活动用户的个人资料。”
  • 您可以在How-To: Use the Graph API to Upload Photos to a user’s profile 开发人员博客文章中找到相同的声明,该文章在答案中被引用。将其添加到我的答案中以进行澄清。顺便说一句,当然您需要将me 替换为您想要将照片发布到当前用户以外的个人资料的用户的id(您应该为此使用应用程序access_token)。
  • 我建议你再读一遍这个问题:“如何将这个 imgur 图片上传到我的应用相册?”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多