2012-06-10 2 views
6

Я уверен, что многие разработчики Django должны столкнуться с этой проблемой при использовании social-auth. Изначально, когда вы его разрабатываете, вы хотели бы протестировать его на своем локальном сервере, поэтому вы перенаправили бы доменное имя в вашем etc/hosts.django-social-auth: Как перенаправить example.com на 127.0.0.1:8000?

я пришел это в документации:

https://github.com/omab/django-social-auth#facebook

При определении перенаправления URL в странице настройки Facebook, убедитесь, что не определить http://localhost:8000, потому что он не будет работать, когда тестирование , Вместо этого я определяю http://myapp.com и настраиваю отображение на/etc/hosts или использую dnsmasq.

С моей точки зрения вы не можете определить какие-либо порты в/etc/hosts.

Следовательно, определяя эту запись здесь:

127.0.0.1  example.com 

до сих пор не ударил моего сервера Django, который работает на 127.0.0.1:8000.

Как вы, ребята, это делаете?

Спасибо,

+1

Если вы только набираете mysite.com в адресной строке, он будет использовать порт 80 по умолчанию. Попробуйте 'mysite.com: 8000' –

+0

Ahh thank не знал этого. Но автор также говорит: «Вместо этого я определяю http://myapp.com и настраиваю отображение на/etc/hosts или использую dnsmasq». Следовательно, он не устанавливает myapp.com:8000 в настройках facebook. – Houman

+0

Ну, я не знаю, является ли номер порта значимым для аутентификации с помощью Facebook, но другой вариант - запустить Django на порту 80, для которого потребуются права root, и этот порт еще не был взят (например, Apache). –

ответ

0

Я решил проблему перенаправления, следуя инструкциям здесь: https://serverfault.com/questions/397364/how-to-setup-named-virtual-hosts-in-nginx

Короче говоря, вам нужна запись в/и т.д./хостов, как я выше плюс Nginx прокси между ними.

+0

Обратите внимание, что вы можете просто использовать 127.0.0.1.xip.io – jterrace

+0

@Kave, ответил ли ответ, упомянутый в ответе на сервер? Я вижу в этом комментарии, что вы все еще боретесь с проблемой, дайте мне знать – daydreamer

+0

Daydreamer. Да, это сработало. Мы разобрались в чате. Фактически ошибка, которую я сделал, заключалась в удалении строки 127.0.0.1 MySite.com из/etc/hosts, прежде чем я попытался решить nginx. Я не понимал, что мне нужны оба. – Houman

0

Установить fiddler. После установки перейдите в инструменты> Хосты.

Тогда можно сопоставить с 127.0.0.1:8000 в mysite.com

3

Все говорят, «добавить example.com в файл хостов ...», но забывает упомянуть, что вы должны использовать example.com: 8000 после запуска сервера. Вот более подробные шаги, которые работали для меня:

На Linux:

  • откройте терминал
  • SUDO Gedit (или заменить Gedit с текстовым редактором)
  • открыть и т.д./хосты файл
  • добавить строку: 127.0.0.1 example.com (если у вас уже есть строка, начиная с 127.0.0.1 вы можете оставить его - https://serverfault.com/questions/231844/is-it-safe-to-add-additional-127-0-0-1-entries-to-etc-hosts)
  • сохранить файл
  • запустите свой сервер django dev - python manage.py runningerver
  • откройте браузер и перейдите к example.com:8000 (это дает правильный ответ на Google и другие сайты, которые не будут работать с 127.0.0.1 или localhost)
  • Вы должны увидеть домашнюю страницу своего сайта django.
  • Перейти на социальный сайт, с которым вы хотите установить соединение, и настроить свой идентификатор клиента, используя example.com в качестве имени веб-сайта.Например, URL-адрес обратного вызова для google: http://example.com:8000/complete/google-oauth2/
  • Скопируйте соответствующие настройки ключа/идентификатора и вставьте в свой SETTINGS.py
  • Теперь ваш сервер-разработчик должен работать!

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