2015-02-18 25 views
6

Sto seguendo questo tutorial su railscast per configurare omniauth per l'autenticazione di Facebook sul mio progetto di binari: http://railscasts.com/episodes/360-facebook-authentication?autoplay=true. Sono 4 minuti e tutto quello che ho fatto finora è la gemma fascio omniauth-facebook e ha aggiunto,Rails: Omniauth - "Il parametro app_id è richiesto"

omniauth.rb

OmniAuth.config.logger = Rails.logger 

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, ENV['my id here...'], ENV['my secret code here...'] 

end 

e poi quando vado a http://localhost:3000/auth/facebook ottengo un errore che dice The parameter app_id is required.

+0

Avete effettivamente aggiunto le variabili ENV al vostro ambiente? Controllato qui ci sono? Server riavviato? – dgilperez

+0

Sì, le variabili ENV sono presenti, le hanno eliminate prima di pubblicare qui, ovviamente. E ho appena riazzerato il mio server. Ma non sono sicuro di cosa intendi per "Hai controllato qui?" – roguerat

+0

Spiacenti, errore di battitura. Voglio dire, se hai controllato che le variabili di env siano effettivamente nel tuo ambiente (cioè le hai aggiunte a ~/.bashrc ma hai dimenticato di '' source ~/.bashrc'' sarebbe un errore comune). È possibile arrestare il server e, nella stessa console, digitare '' printenv | grep FACEBOOK_APP_ID'' o qualunque sia la tua variabile env è denominata – dgilperez

risposta

8

Oh, ora vedo: è necessario definire le variabili di ambiente per memorizzare il tuo facebook_app_id e facebook_secret. Di aggiungerli al tuo ambiente come questo (assumendo sistema unix-like):

Aggiungere questo alla fine del file ~/.bashrc (o equivalente):

export FACEBOOK_APP_ID='your_id_here' 
export FACEBOOK_SECRET='your_secret_here' 

quindi aprire un nuovo terminale per essere sicuri che essere caricato nell'ambiente.

Finalmente, nel vostro omniauth.rb inizializzazione si digita esattamente:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET'] 
end 

saperne di più sul tema here, per esempio.

È inoltre possibile utilizzare dotenv gem per gestire le variabili di ambiente.

2

È possibile impostare i tasti sulla variabile ENV come dice dgilperez oppure rimuovere ENV e scriverlo direttamente.

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, 'FACEBOOK_APP_ID', 'FACEBOOK_SECRET' 
end 

se si mette il codice sorgente in un repo pubblico (come GitHub), utilizzare la variabile ENV come è più sicuro.

+0

Questo aiuterà chi non sta bene con Unix come OS o Linux distro. – learner