2012-10-04 28 views
6

我新的Rails和我與結合OmniAuth Facebook的寶石到我現有的Rails應用掙扎。我遵循railscast教程(http://railscasts.com/episodes/360-facebook-authentication),但是當我點擊/ auth/facebook時,我得到一個NoSessionError異常,並且它說我必須爲OmniAuth提供一個會話。我會發布代碼,但它完全像在railscast教程中。導軌 - OmniAuth Facebook的投擲NoSessionError

它炸燬了這條線在strategy.rb在OmniAuth: 提高OmniAuth :: NoSessionError.new( 「你必須提供一個會話使用OmniAuth」),除非ENV [ 'rack.session']

我是否需要明確開始會話?

+0

可以在這裏發佈代碼段和rails版本的詳細信息嗎? –

回答

1

確保你正在設置你的環境變量。該Railscast教程要求您App ID/API Key和​​按鍵被設置爲環境變量,以便omniauth初始化可以連接

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

要做到這一點:這樣做

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

其他兩個途徑是創建config.yml與你的config /目錄:

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' 

第二個選項是最優選的。