я работаю с omniauth в своем приложении rails, у меня есть знак с кнопкой facebook и twitter, когда я ввожу facebook в URL-адрес сайта, зарегистрированный localhost: 3000, все работает, но когда я загружаю сайт в героку и изменение URL-адреса сайта на sitename.heroku.com, кнопка входа в систему Twiiter работает, но кнопка Facebook не работает...
omniauth с facebook не работает на производстве
Ответы (2)
Возможно, вам нужно предоставить нам дополнительную информацию (Что вы имеете в виду, что кнопка facebook не работает? Вы получаете сообщение об ошибке? Если да, то что? Что говорят ваши журналы?)
НО, есть большая вероятность, что это ваша проблема: есть известная проблема с использованием аутентификации omniauth facebook на героку. Вам необходимо добавить явную ссылку на файл SSL-сертификатов в файле config/initializers/omniauth.rb. Измените строку конфигурации facebook, включив в нее хэш client_options следующим образом:
provider :facebook, 'YOUR_APP_ID', 'YOUR_SECRET_KEY',
{:scope => 'PERMISSION_1, PERMISSION_2, PERMISSION_3...', :client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}}
Если вы хотите протестировать на локальном хосте и сохранить рабочую среду, вы можете:
1- Создайте новое приложение Facebook только в целях разработки
2- Установите в поле URL-адрес сайта значение: http://localhost:3000/
3- Затем отредактируйте файл /config/initializers/omniauth.rb
, чтобы он соответствовал следующему:
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
if Rails.env.development?
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
provider :facebook, 'DEV_APP_ID', 'DEV_APP_SEVRET'
else
provider :facebook, 'DEPLOY_APP_ID', 'DEPLOY_APP_SECRET'
end
end
Наконец, перезапустите rails server
, и вы сможете войти в систему через новое приложение.