Rails - 使用URL将图片上传到Facebook

时间:2014-08-06 03:27:23

标签: ruby-on-rails facebook amazon-s3

我将Koala用于Facebook API,Paperclip用于Amazon S3。

我已经完成了S3上传的代码,但是上传了Facebook的问题。

这是我的简化代码:

@user = User.find(params[:id])
@graph = Koala::Facebook::API.new(session[:access_token])
file = open(@user.photo.url(:origin)).read

# ALBUM_ID is constant, its value is the Facebook's album ID
@graph.put_picture(file, { }, ALBUM_ID)

我在最后一行收到此错误:

ArgumentError

string contains null byte

我认为我设置file的方式是错误的,但我无法找到其他方法。

先谢谢。

1 个答案:

答案 0 :(得分:1)

使用网址在Facebook上上传图片时,您只需直接发送图片网址(需要发送二进制数据)。

# REMOVE THIS LINE
file = open(@user.photo.url(:origin)).read

将API调用更新为:

# ALBUM_ID is constant, its value is the Facebook's album ID
@graph.put_picture(@user.photo.url(:origin), {}, ALBUM_ID)

使用put_picture方法的其他一些方法:

  #     put_picture(file, content_type, {:message => "Message"}, 01234560)
  #     put_picture(params[:file], {:message => "Message"})
  #     # with URLs, there's no optional content type field
  #     put_picture(picture_url, {:message => "Message"}, my_page_id)

来源:Koala gem。