2012-10-04 10 views
6

私はRailsが新しく、既存のレールアプリにOmniAuth-Facebookの宝石を組み込むことに苦労しています。私はrailscastチュートリアル(http://railscasts.com/episodes/360-facebook-authentication)に従ってきましたが、私が/認証/フェイスブックをヒットしたとき、NoSessionError例外が発生し、OmniAuthにセッションを提供する必要があると言います。私はコードを投稿したいが、それはrailscastのチュートリアルのようなものだ。Rails - OmniAuth-Facebook投げNoSessionError

それはOmniAuthでstrategy.rbに、このライン上に吹いています

: 昇給OmniAuth :: NoSessionError.new( "あなたはOmniAuthを使用するようにセッションを提供しなければならない")ENVない限り、[ 'rack.session']

セッションを明示的に開始する必要はありますか?

+0

ここにコードスニペットとレールのバージョンの詳細を投稿できますか? –

答えて

1

環境変数を設定していることを確認してください。作成することですこれを行うために

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

他の二つの路線:Railscastチュートリアルはomniauth初期化子がこれを行うには

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

を接続できるように、あなたのApp ID/API 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' 

第二の選択肢が最も好ましい削除します。