web-dev-qa-db-ja.com

HTTPartyとトークンによる承認

どういうわけか、HTTPartyはCURLが正常に機能する401を返します。ヘッダーでトークンを渡す方法がわからない。

作業中(200):

curl http://localhost:3020/api/products -H 'Authorization: Token token="111"'

動作しない(401):

HTTParty.get('http://localhost:3020/api/products', headers: {"Authorization: Token token" => '111'})

"Authorization" => '111'"token" => '111'だけで試しましたが、同じ結果になりました。

15
olimart

次のように動作させることができました。

HTTParty.get("http://localhost:3020/api/products", headers: {"Authorization" => "Token token=\"111\""})
29
olimart

これは、クラスのヘッダーを動的に設定する場合にも機能します。この例は、DunとBradstreetの認証トークンを取得するためのものです。

require 'httparty'

require 'certified'

class DnbAuth


  include HTTParty

  debug_output $stdout

  base_uri "https://maxcvservices.dnb.com/rest/Authentication"


  def initialize(ct,u,p)

    self.class.headers 'Content-type' =>  "#{ct}"

    self.class.headers 'x-dnb-user' => "#{u}"

    self.class.headers 'x-dnb-pwd'=> "#{p}"

  end


  def token()


    response = self.class.post("/")



  end





end


ct = 'text/xml'
u = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
p = 'xxxxxx'

xx = DnbAuth.new(ct,u,p)

puts xx.token.message
3
Conor