2012-05-30 62 views
2

我正在做一個涉及使用考拉寶石調用Facebook圖形API的rails項目。 是否有可能通過圖表API發佈到帶有圖片/視頻附件(不是圖片鏈接)的Facebook牆?如何使用考拉寶石發佈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> 

幫助?

回答

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 

因爲是更好地把控制複製狀態消息....

享受! !

+0

我得到這個:'類型:OAuthException,代碼:100,消息:(#100)FBCDN圖像中不允許流[HTTP 400]' – Sheharyar

+0

你還需要在你的文章中添加一個'link'鍵:{「picture」=> @picture_url,「link」=> @picture_url}。您也可以將鏈接轉到您的網站。 – jOshT