2012-10-04 3 views
6

मैं रेल के लिए नया हूं, और मैं अपने मौजूदा रेल ऐप में OmniAuth-Facebook मणि को शामिल करने के साथ संघर्ष कर रहा हूं। मैंने रेलस्क्रीन ट्यूटोरियल (http://railscasts.com/episodes/360-facebook- प्रमाणीकरण) का पालन किया है, लेकिन जब मैं/auth/facebook हिट करता हूं तो मुझे NoSessionError अपवाद मिलता है, और यह कहता है कि मुझे OmniAuth को एक सत्र प्रदान करना होगा। मैं कोड पोस्ट करूंगा, लेकिन यह रैलकास्ट ट्यूटोरियल में बिल्कुल ठीक है।रेल - OmniAuth- फेसबुक फेंकना 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 ट्यूटोरियल है कि आपके App ID/API Key और App Secret कुंजी वातावरण चर के रूप में स्थापित कर रहे हैं ताकि omniauth प्रारंभकर्ता कनेक्ट कर सकते हैं

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

ऐसा करने के लिए की आवश्यकता है के साथ अपने 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' 

दूसरा विकल्प सबसे बेहतर है हटा दें।