如何让Netflix OAuth API使用我的回调?

sor*_*ens 6 oauth netflix ruby-on-rails-3

我有一个简单的Rails应用程序,我试图使用Netflix API来访问我的一些订阅者信息,例如我的历史记录和队列.我的问题是,无论我做什么,Netflix都不会使用我的oauth_callback网址,而是在用我的用户凭据授权应用程序之后将我转发到Netflix网站.

以下是向Netflix API发出请求的控制器代码

class ExportController < ApplicationController

  def export
    consumer = OAuth::Consumer.new( ENV['NETFLIX_KEY'],ENV['NETFLIX_SECRET'],
      :site => "http://api.netflix.com",
      :request_token_url => "http://api.netflix.com/oauth/request_token",
      :access_token_url => "http://api.netflix.com/oauth/access_token", 
      :authorize_url => "https://api-user.netflix.com/oauth/login" )
    request_token = consumer.get_request_token
    session[:request_token]=request_token
    session[:request_token_secret]=request_token.secret
    url = request_token.authorize_url( :oauth_callback => "http://#{ENV['OAUTH_CALLBACK_DOMAIN']}/export_callback/", :oauth_consumer_key => ENV['NETFLIX_KEY'],
      :application_name => ENV['APPLICATION_NAME'] )
    redirect_to url
  end

  def export_callback
    @request_token=OAuth::RequestToken.new(session[:request_token],session[:request_token_secret]) 
    @access_token = @request_token.get_access_token(:oauth_verifier => params[:oauth_verifier])
  end
end
Run Code Online (Sandbox Code Playgroud)

控制器正确重定向到https://api-user.netflix.com/oauth/login站点,并正确设置所有参数.我获得了Netflix登录/授权应用页面.

Netflix链接帐户页面

但是,如果我查看此页面的来源,我会在表单中看到该oauth_callback字段设置为oob

      <input type="hidden" name="oauth_callback" value="oob"/>
Run Code Online (Sandbox Code Playgroud)

我已经检查了几种不同的方法,我设置的oauth_callback参数与Netflix Authentication Walkthrough相同.实际上,当我通过演练并在其字段中放入我的回调url时,它确实会重定向回我的rails应用程序.

所以,我的问题,有谁知道如何让Netflix尊重我的oauth_callback领域?

编辑:

https://api-user.netflix.com/oauth/login?oauth_callback=http%3A%2F%2Fnetflix.dev%2Fexport_callback%2F&oauth_consumer_key=[REMOVED]&oauth_nonce=631831&oauth_timestamp=1321458391&application_name=[REMOVED]&oauth_token=[REMOVED]
Run Code Online (Sandbox Code Playgroud)

你可以看到oauth_callback=http%3A%2F%2Fnetflix.dev%2Fexport_callback%2F被设置,这是我本地rails应用程序的路径.

EDIT2:

我现在用的是oauth (0.4.5)rails (3.1.0)ruby-1.9.2-p290 [ x86_64 ]在Mac OS X 10.6.8.

chr*_*ton 1

表格oob中的 可能是指“越界”。问题在于:

request_token = consumer.get_request_token
Run Code Online (Sandbox Code Playgroud)

当您获取请求令牌时,Netflix 会让您传入回调 url,并在登录页面验证该 url。在你的情况下,如果你将其更改为:

request_token = consumer.get_request_token( 
          :oauth_callback => 
             "http://#{ENV['OAUTH_CALLBACK_DOMAIN']}/export_callback/" )
Run Code Online (Sandbox Code Playgroud)

从那时起一切都应该正常,并且表单将获得该值。我测试了你的代码,得到了相同的结果oob,然后添加了更改,它在表单中给出了正确的值。