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