Ho una semplice applicazione Rails con cui sto cercando di utilizzare l'API Netflix per accedere ad alcune delle mie informazioni di sottoscrizione, come la mia cronologia e la mia coda. Il mio problema è che, qualunque cosa io faccia, Netflix non userà il mio URL oauth_callback
, ma invece mi inoltrerà al sito Netflix dopo che autorizzo l'applicazione con le mie credenziali utente.Come faccio a fare in modo che l'API OAuth di Netflix utilizzi la mia callback?
Ecco il codice di controllo che effettua la richiesta alle 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
Il controller reindirizza correttamente https://api-user.netflix.com/oauth/login
sito, con tutti i parametri impostati correttamente. Ottengo la pagina di accesso/autorizzazione di Netflix.
Tuttavia, se guardo la sorgente di questa pagina, vedo in forma che il campo oauth_callback
è impostato su oob
<input type="hidden" name="oauth_callback" value="oob"/>
Ho controllato molti modi diversi, e Sto impostando il parametro oauth_callback
allo stesso modo dello Netflix Authentication Walkthrough. In effetti, quando passo alla procedura dettagliata e inserisco l'url di richiamata nel loro campo, in effetti viene reindirizzato all'applicazione rails.
Quindi, la mia domanda, qualcuno sa come rendere Netflix rispettare il mio campo oauth_callback
?
edit:
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]
Si può vedere oauth_callback=http%3A%2F%2Fnetflix.dev%2Fexport_callback%2F
essere set, che è la strada per il mio guide locali app.
EDIT2:
Sto usando il oauth (0.4.5)
e rails (3.1.0)
e ruby-1.9.2-p290 [ x86_64 ]
su Mac OS X 10.6.8.
Potete anche fornire i parametri di richiesta quando la richiesta sta per api-utente (e non dimenticare di randomizzare gli hash!)? –
non è la oauth_callback per la chiamata consumer.get_request_token? vedi http://developer.netflix.com/docs/Security – esskar
@phil pirozhkov Ho aggiunto la richiesta a api-user. – sorens