Netflix APIを使用して履歴とキューなどの加入者情報にアクセスしようとしている単純なRailsアプリケーションがあります。私の問題は、私が何をするにしても、Netflixは私のoauth_callback
URLを使わず、代わりに私のユーザー資格情報でアプリケーションを認証した後、私をNetflixサイトに転送します。ここで Netflix OAuth 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
すべてのパラメータが正しく設定されてコントローラが正しく、https://api-user.netflix.com/oauth/login
サイトにリダイレクトする要求を行っているコントローラのコードです。 Netflix Login/Authorizeアプリページが表示されます。私は、このページのソースを見れば
しかし、私はいくつかの異なる方法をチェックしましたoauth_callback
フィールドがoob
<input type="hidden" name="oauth_callback" value="oob"/>
に設定された形で表示され、私はoauth_callback
パラメータをNetflix Authentication Walkthroughとちょうど同じに設定しています。実際に、私がウォークスルーを通過して自分のフィールドにコールバックURLを入れると、実際には自分のレールアプリケーションにリダイレクトされます。
だから、私の質問は、誰も私の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
ているセットを、見ることができます。
EDIT2:
私は、Mac OS X 10.6.8にoauth (0.4.5)
とrails (3.1.0)
とruby-1.9.2-p290 [ x86_64 ]
を使用しています。
リクエストがapi-userに送信されたときにリクエストパラメータを指定することもできます(ハッシュをランダム化するのを忘れないでください)。 –
あなたはconsumer.get_request_tokenコールのoauth_callbackではありませんか? http://developer.netflix.com/docs/Security – esskar
@phil pirozhkovを参照してください。api-userにリクエストを追加しました。 – sorens