我有一個簡單的Rails應用程序,我試圖使用Netflix API來訪問我的一些訂閱者信息,例如我的歷史記錄和隊列。我的問題是,無論我做什麼,Netflix都不會使用我的oauth_callback
網址,而是在使用我的用戶憑據授權應用程序後,將我轉到Netflix站點。如何使Netflix OAuth API使用我的回調?
這裏是一個正在請求到Netflix的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登錄/授權應用程序頁面。
但是,如果我看這個頁面的源代碼,我看到在我檢查了幾種不同的方式,該oauth_callback
字段設置爲oob
<input type="hidden" name="oauth_callback" value="oob"/>
的形式,和我將oauth_callback
參數設置爲與Netflix Authentication Walkthrough相同。實際上,當我瀏覽演練並在他們的字段中放入回調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:
我使用的oauth (0.4.5)
和rails (3.1.0)
和ruby-1.9.2-p290 [ x86_64 ]
在Mac OS X 10.6.8。
當請求發送給api用戶時(請不要忘記隨機化哈希!),您還可以提供請求參數嗎? –
是不是爲您的consumer.get_request_token調用oauth_callback?請參閱http://developer.netflix.com/docs/Security – esskar
@phil pirozhkov我已將請求添加到api用戶。 – sorens