【问题标题】:Steam Web API problems. Ruby on Rails omniauth-steamSteam Web API 问题。 Ruby on Rails omniauth-steam
【发布时间】:2015-05-22 13:45:21
【问题描述】:

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

我为 Steam 设置了登录按钮,我可以点击我的帐户,但是当我尝试返回我的主页时,我遇到了这个错误。

NoMethodError nil:NilClass 的未定义方法“[]” 提取的源代码(第 39 行附近):

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

  def steam_id

感谢您的宝贵时间。

【问题讨论】:

    标签: ruby-on-rails ruby steam-web-api


    【解决方案1】:

    我认为您的问题在于 raw_info 可能是 nil 并因此引发错误,因为您试图访问其中不存在的值。在这个阶段尝试使用调试器(如果你有一个 gem,比如better_errors 或者正在使用 Rails 4,你可能有一个)并检查raw_info 的值。

    您还可以在声明实例变量之前检查 raw_info 是否存在。

    【讨论】:

      【解决方案2】:

      如果没有更多上下文,很难说出您的代码中发生了什么,但我 90% 确定您会收到此错误,因为您正在尝试访问 omniauth-steam 模块中的 raw_info 哈希。您不能这样做,因为在omniauth 策略之外无法访问,即在您的控制器或视图中。如果您在应用程序的某处定义了自己的 raw_info,除非您发布该代码,否则我们将无法告诉您发生了什么。

      此外,omniauth raw_info 哈希通常只包含一个用户的身份凭证。看这里的源代码:

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

      甚至没有响应键,所以我不确定你的 sn-p 代码到底是什么意思。

      简而言之,这里的信息太少,无法说明您的代码到底发生了什么。

      【讨论】:

        【解决方案3】:

        我找到了解决办法!事实证明,您需要在位于 config 文件夹中的 secrets.yml 文件中的 ENV 密钥旁边输入 Steam API 密钥。

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

        也作为新 figaro 版本的旁注

        $ figaro install
        

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

        secret_token.rb 存在于 Rails 3 和 Rails 4.0 应用程序中;它在 Rails 4.1 应用程序中不存在。 它已在 Rails 4.1 中被 secrets.yml 文件取代: http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-12
          相关资源
          最近更新 更多