2

我正在做一个涉及使用 Koala gem 调用 facebook graph API 的 Rails 项目。是否可以通过图形 API 将图片/视频附件(不是图片链接)发布到 Facebook 墙上?

我可以使用此命令放置图片

graph = Koala::Facebook::API.new(access_token)
graph.put_picture(params["picture_path"]) #where params["picture_path] is ActionDispatch::Http::UploadedFile object

但这只上传到相册

我没有这样做:

graph = Koala::Facebook::API.new(access_token)
graph.put_wall_post("hello", {"picture" => params["picture_path"]} ) #where params["picture_path] is ActionDispatch::Http::UploadedFile object


错误:

 undefined method `local_path' for #<ActionDispatch::Http::UploadedFile:0x00000106100a70>

帮助 ?

4

2 回答 2

1

这是一个使用 rmagick 生成的图像的示例:

首先创建一个图像:

@clown = Magick::ImageList.new("public/images/framed_clown.jpg")

然后放入相册(必须使用StringIO)和to_blob:

@clown_id = StringIO.open(@clown.to_blob) do |strio|
  response = @graph.put_picture(strio, "image/jpeg")
  response['id']
end

现在@clown_id 包含图像的 ID,以获取 URL:

@picture_url = @graph.get_picture(@clown_id)

终于可以贴墙了?好吧,请记住您需要 publish_stream 权限:

FACEBOOK_SCOPE = 'user_likes,user_photos,user_photo_video_tags,publish_stream'

所以我们可以说:

begin 
  @graph.put_wall_post("This a test", {"picture" => @picture_url})
rescue => e
  if(e.fb_error_type == "OAuthException")
    # Already Posted
  end
end

因为最好对重复的状态消息进行控制....

享受!!!!!

于 2012-06-06T12:13:28.107 回答
0

这对我有用:

graph.put_picture(params["picture_path"], {:message => "Message"})

(取自:https ://github.com/arsduo/koala/wiki/Uploading-Photos-and-Videos )

于 2012-11-12T16:53:52.093 回答