簡體   English   中英

Netflix API,OAuth和Ruby問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM