Netflix APIを使用して、履歴やキューなどのサブスクライバー情報の一部にアクセスしようとしている単純なRailsアプリケーションがあります。私の問題は、私が何をしても、Netflixは私のoauth_callback
URLを使用せず、代わりに、ユーザー資格情報を使用してアプリケーションを承認した後、Netflixサイトに転送することです。
NetflixAPIにリクエストを送信しているコントローラーコードは次のとおりです
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
https://api-user.netflix.com/oauth/login
コントローラは、すべてのパラメータが正しく設定された状態で、サイトに正しくリダイレクトします。Netflixのログイン/アプリの承認ページが表示されます。
ただし、このページのソースを見ると、oauth_callback
フィールドが次のように設定されていることがわかります。oob
<input type="hidden" name="oauth_callback" value="oob"/>
いくつかの異なる方法を確認しましたが、 Netflix認証ウォークスルーoauth_callback
とまったく同じようにパラメーターを設定しています。実際、ウォークスルーを実行してコールバック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]
設定されていることがわかりますoauth_callback=http%3A%2F%2Fnetflix.dev%2Fexport_callback%2F
。これは、私のローカルRailsアプリへのルートです。
edit2:
Mac OSX10.6.8でとを使用していoauth (0.4.5)
ますrails (3.1.0)
。ruby-1.9.2-p290 [ x86_64 ]