我是Rails的新手,我正在努力将OmniAuth-Facebook gem集成到我现有的Rails应用程序中。我遵循了railscast教程(http://railscasts.com/episodes/360-facebook-authentication),但是当我打/auth/facebook时,我收到了NoSessionError异常,它说我必须向OmniAuth提供 session 。我会发布代码,但是就像在railscast教程中一样。

它在OmniAuth的strategy.rb中的这一行上爆炸了:
提高OmniAuth::NoSessionError.new(“您必须提供一个 session 才能使用OmniAuth。”)除非env ['rack.session']

我是否需要显式启动 session ?

最佳答案

确保您正在设置环境变量。 Railscast教程要求将App ID/API KeyApp Secret key 设置为环境变量,以便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'

第二种选择是最可取的。

关于ruby-on-rails - Rails-OmniAuth-Facebook抛出NoSessionError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12719867/

10-13 04:27