HTTParty 和通过令牌授权

Posted

技术标签:

【中文标题】HTTParty 和通过令牌授权【英文标题】:HTTParty and authorization via token 【发布时间】:2014-06-30 08:00:49 【问题描述】:

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',但结果相同。

【问题讨论】:

【参考方案1】:

设法使其工作如下。

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

【讨论】:

标题部分最后缺少引号。应该是: headers: "Authorization" => "Token token=\"111\"") 您实际上不必包含 111 的引号 其实应该是headers: "Authorization" => "Bearer your_token_here" 【参考方案2】:

如果您想动态设置类的标题,这也有效,此示例用于获取 Dun and 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

【讨论】:

你也可以像base_uri一样定义headers,而不是在initialize方法中做。显然,前提是它不依赖于传递给初始化方法的任何变量。例如,您可以使用它为 API 设置 Authorization 标头。

以上是关于HTTParty 和通过令牌授权的主要内容,如果未能解决你的问题,请参考以下文章

使用 Rails 和 HTTParty 将 JSON 发布到 API

Laravel 通过 Passport 实现 API 请求认证:隐式授权令牌

通过授权属性验证 OAuth 不记名令牌

Azure AD 身份验证令牌未通过 Web api 授权

通过 Auth0 React 和 ASP.net 核心授权然后使用 JWT 令牌

“授权”:令牌未通过 CORS VUEJS APACHE