我是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 Key
和App 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/