[英]Netflix API, OAuth, and Ruby Issue
我試圖將oauth與rares-branch Ruby gem一起使用。 我一直收到錯誤:
OAuth的實例:: Consumer需要有方法`marshal_load'
我的代碼,activate.rb如下。 有關如何解決此問題的任何想法? 謝謝! -Henry
require 'oauth/consumer'
def index
@consumer = OAuth::Consumer.new("CONSUMER KEY","CONSUMER SECRET", {
:site => "http://api.netflix.com",
:request_token_url => "https://api-user.netflix.com/oauth/request_token",
:access_token_url => "http://api.netflix.com/oauth/access_token",
:authorize_url => "https://api-user.netflix.com/oauth/login",
:application_name => "AppName"})
@request_token = @consumer.get_request_token
session[:request_token]=@request_token
session[:request_token_secret]=@request_token.secret
@authorize_url = @request_token.authorize_url({
:oauth_consumer_key => "CONSUMER KEY"
:application_name => "AppName",
:oauth_callback => "http://localhost:3000/activate/callback"
})
redirect_to @authorize_url
end
def callback
@request_token=OAuth::RequestToken.new(session[:request_token],
session[:request_token_secret])
@access_token = @request_token.get_access_token
end
令牌不可序列化,因此您無法將其存儲在會話中。 改為將令牌密鑰和密鑰單獨存儲在會話中,並在需要時再次使用密鑰和密鑰創建新的OAuthToken。
您可能需要清除會話存儲以刪除已放入其中的令牌。
我不知道這是否是最佳解決方案,但這就是我如何解決這個問題:
我將以下代碼添加到我的environment.rb:
class OAuth::Consumer
def marshal_load(*args)
self
end
更多的黑客攻擊,這肯定會解決編組負載錯誤。 我不知道這是否會引起其他問題。
您需要讓用戶在Netflix站點上對其進行物理授權。 在這種情況下,可能是你。 據我了解,您可以在手動授權獲得令牌后緩存令牌。
我遇到了與Yammer API類似的問題,從來沒有真正解決過。 你可能想看看Yammer API,Stammer,Ben Scofield在Ruby中做過的確實處理OAuth魔法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.