У меня есть простое приложение Rails, с которым я пытаюсь использовать API Netflix, чтобы получить доступ к некоторой информации о моем подписчике, такой как моя история и очередь. Моя проблема в том, что независимо от того, что я делаю, Netflix не будет использовать мой URL-адрес oauth_callback
, а вместо этого перенаправит меня на сайт Netflix после того, как я авторизую приложение с помощью своих учетных данных пользователя.
Вот код контроллера, который делает запрос к API Netflix.
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"/>
Я проверил несколько разных способов и устанавливаю параметр oauth_callback
точно так же, как в Пошаговое руководство по проверке подлинности Netflix. На самом деле, когда я прохожу пошаговое руководство и ввожу свой 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.
редактировать2:
Я использую oauth (0.4.5)
, rails (3.1.0)
и ruby-1.9.2-p290 [ x86_64 ]
в Mac OS X 10.6.8.