2010-12-30 7 views
22

Я пытаюсь настроить Omniauth, как описано в этом Railscast. Хотя он работает с Twitter, я не могу заставить его работать с Facebook. Я также создал «http://localhost:3000» как SITEURL и «локальный», как домен, но по-прежнему появляется следующее сообщение об ошибке в браузере:Omniauth Проверка подлинности Facebook на localhost

Invalid redirect_uri: Given URL is not allowed by the Application configuration. 

ли кто-нибудь из вас есть какие-либо предложения о том, как это исправить? Заранее спасибо.

+0

Я не думаю, что добавил какую-либо конфигурацию, кроме 'http://0.0.0.0:3000/'. Когда вы запускаете свой локальный сервер Rails, какой IP-адрес говорит, что он использует? – monocle

+0

Он говорит http://0.0.0.0:3000. Что вы добавили в свой файл хоста? –

+0

Я никогда не изменял свой файл hosts. Он имеет 127.0.0.1 для localhost. – monocle

ответ

32

Посмотрите на перенаправление в URI. Mine читал localhost: 3000, поэтому я изменил URL-адрес сайта на «http: // localhost: 3000 /», и он сработал.

+2

Теперь это работает! Большое спасибо. столкнулся с этой проблемой http://stackoverflow.com/questions/3977303/omniauth-facebook-certificate-verify-failed. Я последовал за советом, указанным в ответе, и произошла другая ошибка: никаких совпадений маршрутов «/ auth/failure» .. Надеюсь найти решение для этого тоже. –

+2

Есть ли способ протестировать на локальном хостинге и все еще иметь приложение, работающее в производственной среде? Я имею в виду, что я могу получить доступ только к моему приложению через facebook, и я хочу продолжать тестирование локально, не имея изменить судьбу перенаправления на Facebook. –

+1

наконец-то кто-то в стеке с идеальным ответом за это дерьмо! спасибо –

7

Попробуйте использовать

http://0.0.0.0:3000/ 

для 'URL сайта'. Это работает для меня. (Кроме того, у меня ничего нет в поле «Site Domain».)

+0

все еще получают ту же ошибку после того, как после вашего совета. вы добавили какую-либо строку в свой файл хоста? из-за этого я теряю разумность. :( –

+0

Rails, наконец, не конвертирует '127.0.0.1' в' localhost', может предоставить доступ сейчас, спасибо. –

28

Вот что сработало для меня.

В настоящее время Facebook не позволяет устанавливать домен сайта в IP, поэтому невозможно установить URL-адрес сайта http://127.0.0.1:3000/, потому что тогда Facebook будет жаловаться, что URL-адрес не соответствует домену.

Так что в вашем Facebook App установить:

Site URL: http://localhost:3000/ 
Domain: localhost 

При доступе приложение на Dev машины убедитесь, что вы вводите в локальном хосте: 3000 в браузере. Если вы используете 127.0.0.1:3000, OmniAuth будет использовать это в URL-адресе обратного вызова, который он отправит на Facebook, а затем Facebook выбросит ошибку, о которой упоминает Райан.

+0

где вы должны их устанавливать? В каком файле? – kibaekr

+0

@kibaekr в вашей панели инструментов facebook https://developers.facebook.com/apps/YOUR_APP_ID/summary –

+0

Есть ли способ протестировать на локальном хосте и все еще иметь приложение, работающее в производственной среде? Я имею в виду, я могу получить доступ только к моему приложению через facebook, и я хочу продолжать тестировать его локально, не изменяя судьбу перенаправления на Facebook. –

15

Я переключился на http://lvh.me:3000 в мой локальный браузер, чтобы протестировать facebook локально. Затем в настройках приложения facebook сделайте lvh.me своим доменом.

lvh.me является зарегистрированным доменом, указывающим на 127.0.0.1, который разработчик купил для локального тестирования субдоменов.

+0

Отличный совет. Благодаря! – bikedorkseattle

0

Если вы на OSX вы можете использовать Pow http://pow.cx/ переименовать Localhost в

http://yourapp-dev 

(на самом деле не переименовали, он добавляется)

вы можете установить, что в качестве действительного доменного имени на Facebook.

+3

Вы пробовали это? Потому что у меня была проблема с этим. Facebook не разрешил .dev адрес. – Shmidt