【问题标题】:django-social-auth : How to redirect example.com to 127.0.0.1:8000?django-social-auth:如何将 example.com 重定向到 127.0.0.1:8000?
【发布时间】:2012-06-13 18:26:34
【问题描述】:

我相信很多 Django 开发者在使用 social-auth 时一定会遇到这个问题。 最初,当您开发它时,您希望在本地服务器上对其进行测试,因此您需要在 etc/hosts 中重定向域名。

我在文档中看到了这个:

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

如果您在 Facebook 设置页面中定义重定向 URL,请务必不要 定义http://localhost:8000,因为它不会 测试时工作。相反,我定义 http://myapp.com 并设置一个 在 /etc/hosts 上映射或使用 dnsmasq。

据我了解,您不能在 /etc/hosts 中定义任何端口。

因此在此处定义此条目:

127.0.0.1       example.com

仍然无法访问运行在 127.0.0.1:8000 的 Django 服务器。

你们是怎么做到的?

谢谢,

【问题讨论】:

  • 如果您只在地址栏中输入 mysite.com,它将默认使用端口 80。试试mysite.com:8000
  • 啊谢谢不知道这个。但作者也说:“相反,我定义myapp.com 并在/etc/hosts 上设置映射或使用dnsmasq。”因此他没有在 facebook 设置下设置 myapp.com:8000。
  • 好吧,我不知道端口号对于通过 Facebook 进行身份验证是否重要,但您的另一个选择是在端口 80 上运行 Django,这将需要 root 权限并且该端口尚未被占用(由 Apache例如)。
  • 啊,我正在尝试以 root 身份运行 PyCharm,但我无法执行 Sudo /home/username/pycharm-2.5.1/bin/pycharm.sh 它会弹出安装对话框。你知道如何以 root 身份运行 PyCHarm 吗?
  • 我建议从命令行 (manage.py runserver) 以 root 身份运行 Django,而不是尝试让 IDE 以 root 身份运行。但是,即使以 root 身份运行 Django 也不是一个好主意,如果你真的需要端口 80,从命令行运行它,直到你完成 facebook auth 的设置,然后回到你的正常开发环境。

标签: python django django-socialauth


【解决方案1】:

每个人都说,“将 example.com 添加到您的主机文件中......”但没有提到您应该在启动 runserver 后使用 example.com:8000。以下是对我有用的更详细的步骤:

在 Linux 上:

  • 打开一个终端
  • sudo 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 开发服务器 - python manage.py runserver
  • 打开浏览器并转到 example.com:8000(这会正确回调 google 和其他不适用于 127.0.0.1 或 localhost 的网站)
  • 您应该会看到 django 网站的主页。
  • 转到您要连接的社交网站并设置您的客户 ID,使用 example.com 作为网站名称。比如google的回调地址是http://example.com:8000/complete/google-oauth2/
  • 复制相应的密钥/ID 设置并粘贴到您的 SETTINGS.py 中
  • 现在您的开发服务器应该可以工作了!

我知道这是一篇较旧的帖子,但我无法在任何地方找到完整的步骤。如有必要,请添加说明,因为我不是这方面的专家。

【讨论】:

    【解决方案2】:

    我已经按照这里的步骤解决了重定向问题:https://serverfault.com/questions/397364/how-to-setup-named-virtual-hosts-in-nginx

    简而言之,您需要像我上面那样在 /etc/hosts 中添加一个条目,并在它们之间添加 nginx 代理。

    【讨论】:

    • @Kave,您在 serverfault 答案中提到的答案是否有效?我在该评论中看到您仍在为这个问题苦苦挣扎,请告诉我
    • 白日梦。是的,它已经奏效了。我们在聊天中解决了。实际上,我犯的错误是在尝试使用 nginx 解决方案之前从 /etc/hosts 中删除了 127.0.0.1 MySite.com 行。我没有意识到我需要两者。
    • 当我使用你提到的设置时,添加到/etc/hosts,然后尝试mysite.com,我得到一个页面说“欢迎使用Ngnix”
    【解决方案3】:

    安装fiddler。安装后,转到工具 > 主机。

    然后你可以从 127.0.0.1:8000 映射到 mysite.com

    【讨论】:

      【解决方案4】:

      以下终于为我解决了...

      在授权的 JavaScript 来源下:http://localhost:8000

      在授权重定向 URI 下:http://localhost:8000/page-name-here

      【讨论】:

        【解决方案5】:

        如果你们中的任何人在将 127.0.0.1 mysite.com 添加到 /etc/hosts 后仍然遇到问题,请检查您是否使用了 VPN。我仍然收到错误消息,“无法连接到 mysite.com:8000”。我通过关闭 VPN 解决了​​这个错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-15
          • 1970-01-01
          • 1970-01-01
          • 2019-05-22
          • 2011-02-28
          • 2015-02-11
          • 1970-01-01
          相关资源
          最近更新 更多