2012-06-10 35 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

如果你定義的Facebook設置頁面重定向URL時,一定不要 定義http://localhost:8000,因爲它不會 工作的時候測試。相反,我在/ etc/hosts上定義http://myapp.com並設置 映射或使用dnsmasq。

從我的理解你不能在/ etc/hosts中定義任何端口。

因此有定義此項:

127.0.0.1  example.com 

仍然沒有命中運行在127.0.0.1:8000我的Django的服務器。

你們如何做到這一點?

感謝,

+1

如果您只在地址欄中鍵入mysite.com,它將默認使用端口80。試試'mysite.com:8000' –

+0

唉謝謝不知道這個。但作者還說:「相反,我定義了http://myapp.com並在/ etc/hosts上設置了映射或使用了dnsmasq。」因此他沒有在facebook設置下設置myapp.com:8000。 – Houman

+0

嗯,我不知道端口號是否對使用Facebook進行身份驗證很重要,但是您的其他選擇是在端口80上運行Django,這需要root權限,並且該端口尚未被佔用(例如,Apache)。 –

回答

0

我已經按照這裏的步驟解決重定向問題:https://serverfault.com/questions/397364/how-to-setup-named-virtual-hosts-in-nginx

總之,你需要在/ etc/hosts中的條目,因爲我有間上面加nginx的代理。

+0

請注意,您可以只使用127.0.0.1.xip.io – jterrace

+0

@Kave,您在serverfault答案中提到的答案是否有效?我在那個評論中看到你仍然在爲這個問題而苦苦掙扎,讓我知道 – daydreamer

+0

空想家。是的,它已經工作。我們在聊天中整理了它。在我嘗試使用nginx解決方案之前,我所做的錯誤實際上是從/ etc/hosts中刪除了127.0.0.1 MySite.com行。我沒有意識到我需要兩個。 – Houman

0

安裝fiddler。安裝完成後,轉至工具>主機。

然後你可以從127.0.0.1:8000映射到mysite.com

3

大家都說,「example.com添加到您的主機文件...」,但忽略不提,你應該使用example.com: 8000啓動runserver後。這裏是爲我工作更詳細的步驟:

在Linux上:

  • 打開一個終端
  • 須藤gedit中(或選擇的文本編輯器替換的gedit)
  • 打開etc/hosts文件文件
  • 添加一行: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 runserver
  • 打開瀏覽器並轉到example.com:8000(這會給谷歌和其他網站提供正確的回調,它將不會與127.0.0.1或localhost一起使用)
  • 你應該看到你的django網站的主頁。
  • 轉到您想要連接的社交網站,並使用example.com作爲網站名稱來設置您的客戶端ID。例如,google的回撥網址是http://example.com:8000/complete/google-oauth2/
  • 複製相應的密鑰/ ID設置並粘貼到您的SETTINGS.py
  • 現在您的開發者服務器應該可以工作!

我知道這是一個較舊的帖子,但我無法在任何地方找到完整的步驟。如有必要,請加上澄清,因爲我不是這方面的專家。

相關問題