2012-05-02 3 views
2

OAuth API가있는 레일스 앱이 있습니다. OAuth 2 인증을 위해 Doorkeeper gem을 사용하고 있습니다. 내 API는 이미지 첨부 파일이있는 메시지를 게시 할 수 있습니다. 루비 콘솔에서 테스트하고 싶습니다. 문제는 다음과 같습니다. - 액세스 토큰을 사용하여 게시 요청에 어떻게 서명합니까?레일 : 첨부 파일과 함께 여러 부분으로 된 메시지를 게시하여 OAuth API 테스트

Doorkeeper wiki는 OAuth2 gem 자체의 API 테스트에 대한 자습서를 제공합니다. 문제는 OAuth2 클래스가 다중 첨부 메시지를 첨부 파일과 함께 게시하는 방법을 제공하지 않는다는 것입니다.

https://github.com/applicake/doorkeeper/wiki/Testing-your-provider-with-OAuth2-gem

그런 다음 다시 레일 API에 첨부 파일을 게시 허용 다중 포스트 보석,있다. 그러나 나는 access_token으로 그러한 요청에 서명하는 방법과 Doorkeeper 인증을 통과하는 방법을 얻지 못한다.

https://github.com/nicksieger/multipart-post

그래서 access_token이 서명 API를 레일에 multiparted 메시지를 게시하는 적절한 방법은 무엇입니까?

답변

2

oauth2 보석이 다중 업로드를 지원하지 않는 것 같습니다. 이 문제 확인 : https://github.com/intridea/oauth2/issues/81

해결 방법은 매개 변수에 쿼리 문자열 또는 헤더로 access_token을 포함시키는 것입니다. README의 예 다음은

require 'net/http/post/multipart' 

url = URI.parse('http://www.example.com/upload') 
File.open("./image.jpg") do |jpg| 
    req = Net::HTTP::Post::Multipart.new url.path, 
    "file" => UploadIO.new(jpg, "image/jpeg", "image.jpg") 

    # here you include the token in headers 
    req['Authorization'] = "Bearer #{THE_ACCESS_TOKEN}" 
    res = Net::HTTP.start(url.host, url.port) do |http| 
    http.request(req) 
    end 
end 
0
당신은 명시 적으로이 오류가있는 경우에 SSL 설정해야

:

EOFError in YourController#youraction 
end of file reached 

Exemple

require 'net/http/post/multipart' 

url = URI.parse('http://www.example.com/upload') 
File.open("./image.jpg") do |jpg| 
    req = Net::HTTP::Post::Multipart.new url.path, 
    "file" => UploadIO.new(jpg, "image/jpeg", "image.jpg") 

    # here you include the token in headers 
    req['Authorization'] = "Bearer #{THE_ACCESS_TOKEN}" 

    http = Net::HTTP.new(url.host, url.port) 

    #mention the use of ssl 
    http.use_ssl = true 

    res = http.request(req) 
end