2015-02-18 2 views
6

Я следую этому руководству railscast, чтобы настроить omniauth для аутентификации facebook на моем проекте rails: http://railscasts.com/episodes/360-facebook-authentication?autoplay=true. Я 4-й минуте матча, и все, что я сделал до сих пор является перевяжите камень omniauth-facebook и добавил,Rails: Omniauth - «Требуется параметр app_id»

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 

, а затем, когда я иду в http://localhost:3000/auth/facebook я получаю сообщение об ошибке сказав The parameter app_id is required.

+0

Вы фактически добавили переменные ENV в свою среду? Проверено здесь? Перезагруженный сервер? – dgilperez

+0

Да, переменные ENV есть, вынимали их, прежде чем публиковать здесь. И я просто пересказал свой сервер. Но я не уверен, что вы подразумеваете под «Проверено здесь?» – roguerat

+0

Опечатка, опечатка. Я имею в виду, если вы проверили переменные env на самом деле в вашей среде (т. Е. Вы добавили их в ~/.bashrc, но забыли «source ~/.bashrc'», была бы распространенной ошибкой). Вы можете остановить свой сервер, и в той же консоли введите '' printenv | grep FACEBOOK_APP_ID'' или независимо от вашей переменной env называется – dgilperez

ответ

8

О, теперь я вижу: вам нужно определить переменные среды для хранения facebook_app_id и facebook_secret. Вы добавляете их в своей среде, как этот (предполагается, что Unix-подобной системе):

Добавить это в нижней части файла ~/.bashrc (или эквивалент):

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

Затем открыть новый терминал, чтобы убедиться, что они загрузиться в среду.

Наконец, в вашем omniauth.rb инициализаторе вы набираете именно:

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

Подробнее о теме here, например.

Вы также можете использовать драгоценный камень dotenv для обработки переменных окружения.

2

Вы можете установить ключи в переменной ENV, как говорит dgilperez, или удалить ENV и записать его напрямую.

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

, если поместить исходный код в общественном репо (как GitHub), используйте переменную ENV, как это более безопасно.

+0

Это поможет тем, кто не очень хорошо разбирается в Unix, как OS или Linux. – learner

Смежные вопросы