簡體   English   中英

Steam Web API問題。 Ruby on Rails的omniauth-steam

[英]Steam Web API problems. Ruby on Rails omniauth-steam

您好,我正在按照本教程http://grschafer.com/guides/2013/09/07/steam-openid-and-webapi-with-rails/

我為Steam設置了登錄按鈕,我可以單擊我的帳戶,但是當我嘗試返回首頁時,卻遇到此錯誤。

NoilError的nil:NilClass提取方法的未定義方法“ []”(第39行左右):

  def player
    @player ||= raw_info["response"]["players"].first
  end

  def steam_id

感謝您的時間。

我認為您的問題在於raw_info可能為nil ,因此引發錯誤,因為您正嘗試訪問其中不存在的值。 嘗試在此階段進入調試器(如果您有寶石,例如better_errors或正在使用Rails 4,則可能有一個調試器),然后檢查raw_info的值。

您還可以在實例變量聲明之前檢查是否存在raw_info

在沒有更多上下文的情況下很難說代碼中正在發生什么,但是我90%肯定會收到此錯誤,因為您正在嘗試訪問omniauth-steam模塊中的raw_info哈希。 您無法執行此操作,因為無法在omniauth策略之外(即在您的控制器或視圖中)訪問。 如果您在應用程序中的某個位置定義了自己的raw_info,則除非您發布該代碼,否則我們將無法告訴您發生了什么。

此外,omniauth raw_info散列通常只包含一個用戶的身份憑證。 在這里查看源代碼:

https://github.com/reu/omniauth-steam/blob/master/lib/omniauth/strategies/steam.rb

甚至沒有響應鍵,因此我不確定您的代碼片段到底打算做什么。

簡而言之,這里的信息太少,無法說明您的代碼究竟發生了什么。

我找到了解決方法! 原來,您需要在config文件夾中secrets.yml文件中的ENV Key旁邊輸入Steam API密鑰。

production: secret_key_base: <%= ENV["YOUR_STEAM_KEY"] %>

作為新的Figaro版本的附帶說明,

$ figaro install

有關Secret_token.rb更改的更多信息:

在Rails 3和Rails 4.0應用程序中存在secret_token.rb。 它在Rails 4.1應用程序中不存在。 在Rails 4.1中,它已由secrets.yml文件替換: http : //guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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