【问题标题】:Uploading photo from server to facebook将照片从服务器上传到 Facebook
【发布时间】:2012-08-17 05:34:16
【问题描述】:

我有一个 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) 需要上传文件", “类型”:“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

【问题讨论】:

    标签: ruby facebook facebook-graph-api


    【解决方案1】:

    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
    

    【讨论】:

    • 感谢您的回答!因为我想使用我自己的照片休息客户端是解决方案。我设法从 irb 得到这个工作,但它不能从服务器工作,因为我不知道该写什么作为文件的路径。假设我想从公共文件夹中发布“images/1.jpg”。我应该写什么作为这个文件的路径?
    • 如果您使用的是 RoR 并且图像在 public/images 中,那么您可以使用 Rails.root.join('public', 'images', 'my_image.jpg') 获取路径
    • 谢谢,但我正在使用 Sinatra。你怎么能在 Sinatra 中做到这一点?
    • File.join('public', 'images', 'my_image.jpg') 应该这样做(未测试)
    • 我解决了!我将图像放在图像托管服务器上,然后使用“open-uri”获取它们。
    猜你喜欢
    • 2011-11-18
    • 2012-02-27
    • 2014-09-11
    • 2012-06-23
    • 2011-04-08
    • 1970-01-01
    • 2011-04-11
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多