2011-11-07 2 views
6

Netflix API를 사용하여 내 기록 및 큐와 같은 일부 구독자 정보에 액세스하려는 간단한 Rails 응용 프로그램이 있습니다. 내 문제는 내가 무엇을해도 Netflix는 내 oauth_callback URL을 사용하지 않고 내 사용자 자격 증명으로 응용 프로그램을 인증 한 후 Netflix 사이트로 전달합니다. 여기 Netflix OAuth API에서 콜백을 사용하도록 설정하려면 어떻게해야합니까?

은 넷플 릭스 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 앱 페이지가 나타납니다. 나는이 페이지의 소스를 보면

Netflix Link Account page

그러나, 나는 여러 가지 방법을 확인 한 oauth_callback 필드가 oob

 <input type="hidden" name="oauth_callback" value="oob"/> 

로 설정되어 있는지 형태로보고, oauth_callback 매개 변수를 Netflix Authentication Walkthrough과 동일하게 설정합니다. 실제로, 연습을 거쳐 자신의 필드에 콜백 URL을 넣으면 실제로 레일 응용 프로그램으로 다시 리디렉션됩니다.

내 질문에, 누구든지 내 oauth_callback 필드를 존중하도록 Netflix를 만드는 방법을 알고 있습니까?

편집 :

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 :

내가 사용하고있는 oauth (0.4.5)rails (3.1.0) 및 Mac OS X 10.6.8에 ruby-1.9.2-p290 [ x86_64 ].

+0

요청이 api-user로 전송 될 때 요청 매개 변수를 제공 할 수 있습니까 (해시를 무작위로 추출하는 것을 잊지 마세요). –

+0

당신을위한 oauth_callback가 consumer.get_request_token 호출이 아닙니까? http://developer.netflix.com/docs/Security를 ​​참조하십시오. – esskar

+0

@phil pirozhkov api-user에게 요청을 추가했습니다. – sorens

답변

1

형태가있는 oob은 아마도 "범위를 벗어남"을 나타냅니다.

request_token = consumer.get_request_token 

넷플릭스는 요청 토큰을 얻을 때 콜백 URL로 전달하게하고, 로그인 페이지의 URL을 확인 : 문제는 함께입니다. 귀하의 경우에는 다음과 같이 변경하십시오 :

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

모든 것이 해당 지점에서 작동하며 양식에이 값이 적용됩니다. 나는 당신의 코드를 테스트하고 같은 oob을 얻은 다음 변경을 추가하고 폼에 올바른 값을 주었다.

-1

Netflix Authentication Walk-Through을 시도해보고 계정에 적용되는지 확인하십시오. 그것은 파이어 폭스를 사용하여 나를 위해 일했다. (나는 또한 & IE에 URL을 붙여 넣고 correcly로 리다이렉트했다). 그때 당신은 당신이 생성하는 URL과 함께 walk-through와 url을 비교하고 문제를 해결해야한다.

+0

내 질문을 읽었을 때 이미 결과를 비교하기 위해 워크 쓰루를 사용했음을 나타 냈습니다. – sorens

+0

콜백이 정상적인 매개 변수이기 때문에 나 혼란 스럽다. 서명되지 않았거나 아무 것도 없다. 그 이후 changeling 문제가되지 않습니다 (나는 당신이 그물 수정 로그인 화면을보고 의미)! – esskar

관련 문제