2012-10-04 6 views
6

Ich bin neu bei Rails, und ich habe Schwierigkeiten mit der OmniAuth-Facebook-Juwel in meine vorhandene Rails-App zu integrieren. Ich habe das Railscast-Tutorial (http://railscasts.com/episodes/360-facebook-authentication) befolgt, aber wenn ich/auth/facebook drücke, bekomme ich eine NoSessionError-Ausnahme und es heißt, dass ich eine Sitzung für OmniAuth bereitstellen muss. Ich poste Code, aber es ist genau wie im Railscast-Tutorial.Rails - OmniAuth-Facebook werfen NoSessionError

Es ist auf dieser Linie in strategy.rb in OmniAuth Sprengung: Erhöhung OmniAuth :: NoSessionError.new ("Sie müssen eine Sitzung zur Verfügung stellen OmniAuth verwenden"), es sei denn env [ 'rack.session']

Muss ich explizit eine Sitzung starten?

+0

können Sie Code Snippet & Rails Details hier veröffentlichen? –

Antwort

1

Stellen Sie sicher, dass Sie Ihre Umgebungsvariablen festlegen. Die Railscast Tutorial setzt voraus, dass Ihre App ID/API Key und App Secret Schlüssel als Umgebungsvariablen gesetzt sind, so dass die omniauth initializer

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

dies zu tun:

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

Zwei weitere Strecken, dies zu tun ist, eine schaffen config.yml in Ihrem config/Verzeichnis mit:

development: 
    app_id:  'YOUR APP ID' 
    app_secret: 'YOUR SECRET KEY' 

Fügen Sie diese in Ihre config/application.rb

AppConfig = YAML.load(ERB.new(File.read(File.expand_path('../config.yml', __FILE__))).result)[Rails.env] 
AppConfig.symbolize_keys! 

Dann sie in Ihrem initializer Referenz mit AppConfig[:app_secret] and AppConfig[:app_id]

Die letzte Option ist nur die Werte in den Provider zu codieren und die ENV

provider :facebook, 'YOUR APP ID', 'YOUR SECRET KEY' 

Die zweite Option die am meisten bevorzugte ist entfernen.

Verwandte Themen