【问题标题】:OmniAuth 1.0: NoMethodError when clicking user_omniauth_authorize_path(:facebook) linkOmniAuth 1.0:单击 user_omniauth_authorize_path(:facebook) 链接时出现 NoMethodError
【发布时间】:2012-02-24 09:07:31
【问题描述】:

我在点击 user_omniauth_authorize_path(:facebook) 链接时遇到了这个问题:

Started GET "/users/auth/facebook" for 127.0.0.1 at 2012-02-24 10:57:03 +0200

    NoMethodError (undefined method `include?' for nil:NilClass):
      omniauth (1.0.2) lib/omniauth/strategy.rb:165:in `call!'
      omniauth (1.0.2) lib/omniauth/strategy.rb:148:in `call'
      omniauth (1.0.2) lib/omniauth/builder.rb:42:in `call'
      warden (1.1.1) lib/warden/manager.rb:35:in `block in call'
      warden (1.1.1) lib/warden/manager.rb:34:in `catch'
      warden (1.1.1) lib/warden/manager.rb:34:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
      rack (1.4.1) lib/rack/etag.rb:23:in `call'
      rack (1.4.1) lib/rack/conditionalget.rb:25:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/head.rb:14:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/flash.rb:242:in `call'
      rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context'
      rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/cookies.rb:338:in `call'
      activerecord (3.2.1) lib/active_record/query_cache.rb:64:in `call'
      activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
      activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `_run__2667807547873405266__call__33580566203138325__callbacks'
      activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback'
      activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'

我目前正在尝试迁移以将 OmniAuth 1.0 与 omniauth-facebook gem 一起使用。所有这些东西都在 Rails 3.2.1 上运行。我在这里学习教程:https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

现在我找不到任何与该教程不同的地方。单击我页面上的 Facebook 登录按钮时,我仍然遇到此问题。

挖掘omniauth gem的strategy.rb,此时失败:

return request_call if on_request_path? && OmniAuth.config.allowed_request_methods.include?(request.request_method.downcase.to_sym)

【问题讨论】:

    标签: ruby-on-rails facebook devise omniauth


    【解决方案1】:

    我刚刚将它添加到初始化文件中,它似乎解决了这个问题。

    OmniAuth.config.allowed_request_methods = [:post, :get]
    

    【讨论】:

      【解决方案2】:

      据我发现,该错误不在omniauth gem 中,而是在机架中。至少这是 github 上的人发现的。检查问题:

      OmniAuth:https://github.com/intridea/omniauth/issues/568

      机架:https://github.com/rack/rack/issues/322

      当我从 gems 切换到查看 repos 时,它开始工作了:

      gem 'rack', git: 'https://github.com/rack/rack.git'
      gem 'omniauth', git: 'https://github.com/intridea/omniauth.git'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-25
        • 1970-01-01
        • 1970-01-01
        • 2011-03-25
        • 1970-01-01
        相关资源
        最近更新 更多