Недавно, когда я работал над социальной аутентификацией для моего веб-приложения Django, мне требовалось безопасное соединение для входа в facebook даже с localhost. С марта 2018 года вход в систему Facebook принудительно использует HTTPS в вашем приложении, даже если это тестовое приложение. Мне пришлось создать локально доверенный сертификат.

Используемые инструменты:

  1. mkcert: https://github.com/FiloSottile/mkcert. Для создания сертификатов

2. django-sslserver: помогает нам запустить сервер с сертификатом, который мы должны создать.

  1. Мкцерт
  • После установки mkcert перейдите в свой рабочий каталог с помощью cmd (запуск от имени администратора) и выполните эту команду:

mkcert -install

Вы должны это увидеть

Использование локального CA в «C: \ Users \ {ваше имя пользователя} \ AppData \ Local \ mkcert» ✨
Локальный CA уже установлен в системном хранилище доверенных сертификатов! 👍

  • теперь создайте сертификаты с помощью этой команды:

mkcert -cert-file cert.pem -key-file key.pem 0.0.0.0 localhost 127.0.0.1 :: 1

Замените 0.0.0.0, localhost, 127.0.0.1 доменами, которые вы будете запускать локально.

Файлы cert.pem и key.pem будут созданы в вашем текущем рабочем каталоге. вы можете заменить их любыми именами, которые захотите.

но поскольку мы будем запускать их в Django, скопируйте их в ту же папку, что и manage.py

2. Django-sslserver

активируйте свою виртуальную среду

pip install django-sslserver

обновите свой settings.py, добавив «sslserver» в INSTALLED_APPS

Теперь при запуске сервера: python manage.py runsslserver - сертификат cert.pem - ключ key.pem

Вернитесь в facebook и убедитесь, что вы добавили https: // localhost: 8000 / и https://127.0.0.1:8000/ в качестве доменов приложений.

и то же самое для URL-адреса сайта под сайтом.

добавьте логин facebook в качестве продукта в свое приложение, включите вход OAuth встроенного браузера.

а также, поскольку для URI перенаправления принудительно используется строгий режим, добавьте действительные URI перенаправления oauth:

Если вы используете django-allauth в качестве пакета социальной аутентификации, добавьте следующее:

Https://127.0.0.1:8000/accounts/facebook/login/callback

Https: // localhost: 8000 / accounts / facebook / login / callback

Https://127.0.0.1:8000/

Https: // localhost: 8000 /