【问题标题】:Rails - OmniAuth-Facebook throwing NoSessionErrorRails - OmniAuth-Facebook 抛出 NoSessionError
【发布时间】:2013-02-14 04:49:26
【问题描述】:

我是 Rails 新手,正在努力将 OmniAuth-Facebook gem 整合到我现有的 rails 应用程序中。我遵循了 railscast 教程(http://railscasts.com/episodes/360-facebook-authentication),但是当我点击 /auth/facebook 时出现 NoSessionError 异常,它说我必须向 OmniAuth 提供会话。我会发布代码,但它与 railscast 教程中的完全一样。

它在 OmniAuth 中的 strategy.rb 中的这条线上爆炸了: raise OmniAuth::NoSessionError.new("您必须提供会话才能使用 OmniAuth。") 除非 env['rack.session']

我需要明确启动会话吗?

【问题讨论】:

  • 你可以在这里发布代码 sn-p 和 rails 版本的详细信息吗?

标签: ruby-on-rails omniauth


【解决方案1】:

确保您正在设置环境变量。 Railscast 教程要求将您的 App ID/API KeyApp Secret 键设置为环境变量,以便omniauth 初始化程序可以连接

provider :facebook, ENV['APP_ID'], ENV['APP_SECRET']

为此:

export APP_ID=(YOUR APP ID)
export APP_SECRET=(YOUR SECRET KEY)

另外两个方法是在你的 config/ 目录中创建一个 config.yml:

development:
  app_id:     'YOUR APP ID'
  app_secret: 'YOUR SECRET KEY'

将此添加到您的 config/application.rb

AppConfig = YAML.load(ERB.new(File.read(File.expand_path('../config.yml', __FILE__))).result)[Rails.env]
AppConfig.symbolize_keys!

然后在您的初始化程序中使用AppConfig[:app_secret] and AppConfig[:app_id] 引用它们

最后一个选项是将值硬编码到提供程序中并删除ENV

provider :facebook, 'YOUR APP ID', 'YOUR SECRET KEY'

第二个选项是最可取的。

【讨论】:

    猜你喜欢
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2011-05-15
    相关资源
    最近更新 更多