2012-05-02 10 views
2

私はOAuth APIを備えたRailsアプリケーションを持っています。 OAuth 2認証にDoorkeeper gemを使用しています。私のAPIは、イメージファイルの添付ファイルでメッセージを投稿することができます。私はRubyコンソールからテストしたいと思います。今、問題は - 私はどのようにアクセストークンで投稿要求に署名するのですか?Rails:複数のメッセージを添付ファイルで投稿してOAuth APIをテストする

Doorkeeper wikiは、OAuth2 gem自体でAPIをテストするチュートリアルを提供します。 OAuth2クラスでは、複数のメッセージを添付ファイルで投稿する方法は提供されていないという問題があります。

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

その後、再びRailsのAPIへの添付ファイルとしてファイルを投稿できますマルチポスト宝石は、そこにあります。しかし、私はaccess_tokenでそのようなリクエストに署名する方法と、Doorkeeperの認証をパスする方法を知りません。

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

だから、access_tokenはで署名RailsのAPIにmultipartedメッセージを投稿する適切な方法は何ですか?

答えて

2

oauth2 gemはマルチパートアップロードをサポートしていないようです。この問題を確認してください: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 
関連する問題