7

I'm new to Rails, and I'm struggling with incorporating the OmniAuth-Facebook gem into my existing rails app. I've followed the railscast tutorial (http://railscasts.com/episodes/360-facebook-authentication) but when I hit /auth/facebook I get a NoSessionError exception, and it says I must provide a session to OmniAuth. I'd post code, but it's exactly like in the railscast tutorial.

It's blowing up on this line in strategy.rb in OmniAuth: raise OmniAuth::NoSessionError.new("You must provide a session to use OmniAuth.") unless env['rack.session']

Do I need to explicitly start a session?

4

1 に答える 1

1

環境変数を設定していることを確認してください。Railscast チュートリアルでは、omniauth イニシャライザーが接続できるように、キーApp ID/API Keyとキーを環境変数として設定する必要があります。App Secret

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

これをする:

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

これを行うための他の 2 つのルートは、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'

2 番目のオプションが最も望ましいです。

于 2013-02-13T20:49:26.687 に答える