Tôi có một ứng dụng Rails đơn giản mà tôi đang cố gắng sử dụng API Netflix để truy cập vào một số thông tin người đăng ký của tôi, chẳng hạn như lịch sử và hàng đợi của tôi. Vấn đề của tôi là không có vấn đề gì tôi làm, Netflix sẽ không sử dụng địa chỉ của tôi oauth_callback
, nhưng thay vì chuyển tiếp tôi đến trang Netflix sau khi tôi cho phép ứng dụng có thông tin đăng nhập của người dùng của tôi.Làm cách nào để API OAuth Netflix sử dụng tính năng gọi lại của tôi?
Đây là mã điều khiển được đưa ra yêu cầu đối với 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
Bộ điều khiển một cách chính xác chuyển hướng đến trang web https://api-user.netflix.com/oauth/login
, với tất cả các thông số thiết lập một cách chính xác. Tôi nhận được trang ứng dụng Netflix Login/Authorize.
Tuy nhiên, nếu tôi nhìn vào mã nguồn của trang này, tôi nhìn thấy trong hình thức mà lĩnh vực oauth_callback
được thiết lập để oob
<input type="hidden" name="oauth_callback" value="oob"/>
Tôi đã kiểm tra nhiều cách khác nhau, và Tôi đang đặt thông số oauth_callback
giống như thông số Netflix Authentication Walkthrough. Trong thực tế, khi tôi đi qua các hướng dẫn và đặt trong url gọi lại của tôi trong lĩnh vực của họ, nó trong thực tế chuyển hướng trở lại ứng dụng đường ray của tôi.
Vì vậy, câu hỏi của tôi, có ai biết cách làm cho Netflix tôn trọng trường oauth_callback
của tôi không?
chỉnh sửa:
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]
Bạn có thể thấy oauth_callback=http%3A%2F%2Fnetflix.dev%2Fexport_callback%2F
được thiết lập, đó là con đường để ứng dụng đường ray địa phương của tôi.
edit2:
Tôi đang sử dụng oauth (0.4.5)
và rails (3.1.0)
và ruby-1.9.2-p290 [ x86_64 ]
trên Mac OS X 10.6.8.
Bạn có thể vui lòng cung cấp thông số yêu cầu khi yêu cầu chuyển sang người dùng không (và đừng quên ngẫu nhiên băm!)? –
không phải là oauth_callback cho cuộc gọi consumer.get_request_token của bạn? xem http://developer.netflix.com/docs/Security – esskar
@phil pirozhkov Tôi đã thêm yêu cầu vào api-user. – sorens