omniauth с facebook не работает на производстве

я работаю с omniauth в своем приложении rails, у меня есть знак с кнопкой facebook и twitter, когда я ввожу facebook в URL-адрес сайта, зарегистрированный localhost: 3000, все работает, но когда я загружаю сайт в героку и изменение URL-адреса сайта на sitename.heroku.com, кнопка входа в систему Twiiter работает, но кнопка Facebook не работает...


person gal    schedule 12.05.2011    source источник
comment
Я предполагаю, что вы изменили настройку приложения Facebook с localhost: 3000 на фактический адрес вашего сайта Heroku? Вы не можете использовать один и тот же параметр как для локального тестирования, так и для общедоступной рабочей среды.   -  person Craig Stuntz    schedule 12.05.2011
comment
я не использую те же настройки, я изменил настройку приложения facebook с localhost: 3000 на мое приложение на адресе heroku   -  person gal    schedule 12.05.2011


Ответы (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'}}}
person Rob d'Apice    schedule 12.05.2011

Если вы хотите протестировать на локальном хосте и сохранить рабочую среду, вы можете:

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, и вы сможете войти в систему через новое приложение.

person Flavio Wuensche    schedule 25.10.2012