将照片从服务器上传到脸书

时间:2011-09-25 10:35:43

标签: ruby facebook facebook-graph-api

我有一个Facebook画布应用程序,我想将一个文件从我的服务器上传到用户的墙上。

Facebook说应该创建一个表单,这就是我所做的:

 <form action="https://graph.facebook.com/me/photos?access_token=<%= @access_token %>" method="post" enctype="multipart/form-data">
        <input name="source" type="hidden" value="https://young-water-9853.herokuapp.com/images/1.jpg" />
        <input name="commit" type="submit" value="Upload photo" class="cupid-green" />
 </form>

这是我收到的错误:

  

{      “错误”:{         “message”:“(#324)需要上传文件”,         “type”:“OAuthException”      }   }

我怎样才能让它发挥作用?

解决方案:

这是我用来将图片发布到墙上的操作:

get '/post_photo' do 
  RestClient.post 'https://graph.facebook.com/me/photos', :source => open('http://i52.tinypic.com/313jaxd.jpg'), :access_token => ACCESS_TOKEN
  redirect '/'
end

1 个答案:

答案 0 :(得分:3)

source参数需要是文件对象,而不是url。如果用户正在从他们的机器上传文件:

 <form action="https://graph.facebook.com/me/photos?access_token=<%= @access_token %>" method="post" enctype="multipart/form-data">
        <input name="source" type="file" />
        <input name="commit" type="submit" value="Upload photo" class="cupid-green" />
 </form>

或者如果您希望用户上传预定义的图像,您需要处理该服务器端。 rest_client gem看起来是一个理想的解决方案:

require 'rest_client'
RestClient.post 'https://graph.facebook.com/me/photos', :source => File.new('/path/to/your/file'), :access_token => YOUR_ACCESS_TOKEN