2011-09-25 9 views
0

저는 페이스 북 캔버스 응용 프로그램을 가지고 있으며 서버에서 사용자의 벽으로 파일을 업로드하고 싶습니다.서버에서 페이스 북으로 사진 업로드

페이스 북이 양식을 작성해야 말한다, 이것은 내가 무슨 짓을 :

{ "오류":

<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> 

이 내가받은 오류가 { "메시지" : "형" "(# 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 

답변

3

소스 매개 변수 파일 객체가 아닌 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 보석은 다음과 같은 이상적인 솔루션처럼 보입니다.

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

감사합니다. 내 자신의 사진을 사용하고 싶기 때문에 rest-client가 해결책입니다. 필자는 irb에서이 작업을 수행 할 수 있지만 파일의 경로로 쓸 내용을 모르기 때문에 서버에서 작업하지 않습니다. 공용 폴더에서 "images/1.jpg"를 게시하려고한다고 가정 해 보겠습니다. 이 파일의 경로로 무엇을 써야합니까? –

+0

RoR을 사용하고 있고 이미지가'public/images'에 있다면'Rails.root.join ('public', 'images', 'my_image.jpg') ' –

+0

감사 합니다만, 나는 Sinatra를 사용하고있다. 내가 시나트라에서 어떻게 할 수 있니? –

관련 문제