我有一个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
答案 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