【问题标题】:OAuth1 reject_token 401 unauthorizedOAuth1 reject_token 401 未授权
【发布时间】:2019-04-30 12:55:28
【问题描述】:

从授权 URL 重定向回来后,OAuth1.0 的获取访问令牌请求仅对 Magento1.9 有效。下次请求访问令牌时,我得到了reject_token。 我注意到两个对象的签名存在差异。

请求1(成功):

OAuth::Consumer.new(consumer_data)
OAuth::RequestToken.from_hash(some_hash)
request_token.get_access_token(oauth_verifier: 'asdfasdagbadbv')

签名有

oauth_nonce=\"iIHmN7obLeONSitOxFFZQI71v0k4mAsEFLFen0Lw\", 
oauth_signature=\"lwj0n1AK3VJLdaXHIWEOFlYp5qc%3D\"

请求2(不成功):

OAuth::Consumer.new(consumer_data)
OAuth::RequestToken.from_hash(some_hash)
request_token.get_access_token(oauth_verifier: 'asdfasdagbadbv')

签名有

oauth_nonce=\"KciY4tiiPDu1u029Nbdu1C325svchfESTYV1l8mvw\", 
oauth_signature=\"KciY4tiiPt5Du1u029Nbdu1CzCHzvc%3D\"

这可能是问题,也可能不是问题,但这是迄今为止我在两个请求中发现的唯一区别。 请有人帮我更新oauth_noncesignature 或设计其他解决方案。

【问题讨论】:

    标签: ruby-on-rails oauth magento-1.9 oauth-1.0a oauth-ruby


    【解决方案1】:

    问题在第二行。

     request_token.get_access_token(oauth_verifier: 'asdfasdfa')
    

    根据Auth 文档请求令牌应该使用一次。一旦我们使用它们,请求令牌就会过期。您在第二次调用中使用了过期的请求令牌导致拒绝令牌 401 未经授权。

    解决方案

    实际上,请求令牌是用来生成访问令牌的。访问令牌可以多次使用。因此,您需要将访问令牌存储在某处,该令牌在第一行 request_token.get_access_token(oauth_verifier: 'asdfasdfa') 中生成。然后,您可以在重置 API 调用时使用保存的访问令牌。使用访问令牌的语法如下:

    @consumer = OAuth::Consumer.new(...)
    @token = OAuth::Token.new('ACCESS_TOKEN', 'ACCESS_TOKEN_SECRET') // saved access token and secret here
    @consumer.request(:post, '/people', @token, {}, @person.to_xml, { 'Content-Type' => 'application/xml' })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 2018-05-19
      • 2020-09-29
      • 2020-06-11
      • 2017-02-22
      • 2018-10-08
      • 2018-01-05
      相关资源
      最近更新 更多