Как опубликовать стену facebook с загруженным изображением/видео с помощью koala gem?

Я делаю проект rails, который включает использование драгоценного камня Koala для вызова API-интерфейса facebook. Можно ли публиковать сообщения на стене facebook с вложением изображения/видео (не ссылкой на изображение) через API-интерфейс графа?

Я могу поместить изображение с помощью этой команды

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>

Помощь ?


person mhd    schedule 30.05.2012    source источник


Ответы (2)


Вот пример с изображением, сгенерированным с помощью 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 содержит идентификатор изображения, чтобы получить 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

Потому что лучше поставить контроль дублирования сообщения о состоянии....

Наслаждаться!!!!!

person tucano    schedule 06.06.2012
comment
Я понимаю: type: OAuthException, code: 100, message: (#100) FBCDN image is not allowed in stream [HTTP 400] - person Sheharyar; 15.10.2013
comment
Вам также нужно будет добавить ключ «ссылка» в свой пост: {picture =› @picture_url, link =› @picture_url}. Вы также можете сделать так, чтобы ссылка шла на ваш сайт. - person jOshT; 28.01.2017

Это сработало для меня:

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

(Взято с: https://github.com/arsduo/koala/wiki/Uploading-Photos-and-Videos)

person Rebitzele    schedule 12.11.2012