Rails 3 - ошибка маршрутизации Omniauth, работает на локальном, но не на моем сервере - PullRequest
1 голос
/ 10 февраля 2011

Я пытаюсь использовать Omniauth, чтобы разрешить пользователям входить в мое приложение Rails с помощью Facebook. Локально, omniauth автоматически перенаправляет браузер на Facebook для аутентификации, используя следующую ссылку:

<%= link_to "Sign in with Facebook", "/auth/facebook" %>

Он перенаправляет обратно, как ожидается (без ошибки обратного вызова), и я могу выйти из системы.

Проблема возникает, когда я пытаюсь загрузить свое приложение на свой сервер. По какой-то причине Omniauth не включается и не выполняет перенаправление. Вместо этого он просто указывает браузеру на несуществующий каталог в моем приложении (http://sharedchecklist.com/auth/facebook) и выдает эту ошибку:

Routing Error

No route matches "/auth/facebook"

За последние несколько часов я много раз искал, чтобы попытаться выяснить, в чем может быть проблема. Я позаботился о том, чтобы изменить URL сайта и холста на адрес моего приложения. Это не проблема с обратным вызовом.

Это почти как omniauth, не там ...

Кто-нибудь сталкивался с этой проблемой раньше? Я довольно новичок в рельсах, но мне удалось разобраться с любыми проблемами, из-за которых этот вопрос стал самым неприятным.

Если бы URL помог, вот оно: http://sharedchecklist.com/

Спасибо за любую помощь, которую вы можете предложить.

Ответы [ 3 ]

0 голосов
/ 09 марта 2011

Это, кажется, происходит, если config / initializers / omniauth.rb отсутствует.

У меня есть этот файл в списке игнорирования и пример файла как omniauth.rb.sample.Я забыл создать файл omniauth.rb и получил ту же ошибку.

0 голосов
/ 25 октября 2012

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

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

0 голосов
/ 21 февраля 2011

Вы должны указать Facebook, куда перенаправить. Если он работает в процессе разработки, возможно, ваш URL сайта установлен на "http://localhost:3000". Измените его на" http://sharedchecklist.com", и он будет работать Конечно, это тогда сломается в развитии. Поэтому я создал новое тестовое приложение Facebook только для тестирования, которое всегда перенаправляет на localhost.

...