4

我正在尝试生成用于 Netflix 的 oauth 签名。我一直在关注他们的 API 文档,但是当他们到达“如果您使用的是库,一旦您创建了基本字符串,就很容易生成签名。您传递您的基本字符串和您的共享对函数保密并取回签名。有关示例,请参见 OAuth 代码页。”

我可以创建我的基本字符串并拥有我的共享密钥,但无法弄清楚如何使用Oauth gem来生成签名。

任何帮助都会很棒。

4

3 回答 3

2

我最终手动创建了 Oauth 签名,而不是使用 gem:

  plain_url = "#{NETFLIX_PUBLIC_URL}"+"#{NETFLIX_TOKEN_ACCESS}"


   latest_time = "#{Time.now.to_i}"
   nonce = rand(1_000_000)
   token_string="oauth_consumer_key=#{NETFLIX_KEY}&oauth_nonce=#{nonce}&oauth_signature_method=HMAC-SHA1&oauth_timestamp=#{latest_time}" +
       "&oauth_token=#{oauth_token}&oauth_version=1.0"

   encoded_string = CGI.escape(token_string)
   encoded_url = CGI.escape(plain_url)
   signature_string=  "GET&"+encoded_url+"&"+encoded_string
   puts "signature string is " + signature_string

   signature_key = "#{NETFLIX_SECRET}&#{token_secret}"

   signature = Base64.encode64(HMAC::SHA1.digest( signature_key,signature_string)).chomp.gsub(/\n/,'')

   encoded_signature = CGI.escape(signature)
   call = plain_url + "?" + token_string + "&oauth_signature="+encoded_signature
于 2012-07-20T00:14:27.463 回答
0

您是否查看过omniauth 策略以获取提示?https://github.com/spagalloco/omniauth-netflix/blob/master/lib/omniauth/strategies/netflix.rb——开源之美..

于 2012-03-15T05:10:56.983 回答
0

你是这个意思吗:

OAuth::Signature.signature_base_string(request, options = {}, &block)

http://www.rubydoc.info/gems/oauth/0.4.7/OAuth/Signature

于 2015-05-28T05:25:45.743 回答