
В этой статье я объясню, как добавить Google OAuth 2.0 в ваш проект Django.
В этом уроке я буду использовать пакет django-allouth из-за его простоты и количества поддерживаемых провайдеров OAuth.
Давайте начнем!
Создание виртуальной среды
Всегда рекомендуется начинать новый проект в виртуальной среде, так как это помогает изолировать ваши зависимости. Для этой цели я буду использовать pipenv. Вне папки вашего проекта откройте терминал и введите следующую команду (после установки pipenv)
pipenv shell
Установка необходимых пакетов
Требуются следующие пакеты:
- Джанго
- Джанго-Аллаут
- django-sslserver (для запуска защищенного локального хоста)
Вы можете установить пакеты, выполнив команду:
pipenv install <package-name>
Создайте новый проект Django.
После установки данных пакетов создайте новый проект django, используя django-admin:
django-admin startproject g_auth
Создать новое приложение
CD во вновь созданный каталог проекта (g_auth) и введите следующее:
python3 manage.py startapp google_login
Создайте каталог шаблонов
Настройка проекта Джанго
Перейдите в {BASE_DIR}/g_auth/settings.py и добавьте/измените следующие конфигурации:
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#django apps (enter your app's name as in <app_folder>/apps.py)
'google_login',
#packages
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
]
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {
'google': {
'SCOPE': [
'profile',
'email',
],
'AUTH_PARAMS': {
'access_type': 'online',
}
}
}
Редактирование файла urls.py базового проекта
Перейдите в {BASE_DIR}/g_auth/urls.py и добавьте allauth.urls в пути.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('allauth.urls')),
]
Запустить миграцию
Перейдите в {BASE_DIR}, затем выполните:
python3 manage.py migrate
Теперь запустите:
python3 manage.py runserver
чтобы проверить, работает сервер или нет. Запишите URL-адрес и порт сервера разработки.

Теперь, когда настройка завершена, нам нужно получить учетные данные Google OAuth.
Прежде чем сделать это, нам нужно изменить псевдоним URL-адреса сервера разработки с localhost. Для этого нам нужно отредактировать файл hosts.
Редактирование файла hosts
Для окон:
- Откройте Блокнот.exe
- В блокноте откройте следующий файл: c:\Windows\System32\Drivers\etc\hosts
Для Linux:
- Запустить терминал
- запустите sudo nano /etc/hosts
Для macOS:
- Запустить терминал
- запустите sudo nano /private/etc/hosts
В конце файла hosts добавьте IP-адрес сервера разработки вместе с новым псевдонимом.
127.0.0.1 g-auth-demo.com
Вы можете проверить, работает ли новый псевдоним, перейдя по адресу http://g-auth-demo.com:8000 (возможно, вам потребуется перезагрузить компьютер после редактирования файла hosts)
Создание учетных данных Google OAuth
Перейдите в Google API Console и авторизуйтесь под своей учетной записью Google.
В списке проектов нажмите «Новый проект», чтобы создать новый проект Google API. Дайте проекту имя (GAuth) и оставьте местоположение «Нет организации», затем нажмите «Создать».

После создания проекта вы будете перенаправлены на панель инструментов. Перейдите в раздел Учетные данные, нажмите кнопку Создать учетные данные и выберите «Идентификатор клиента OAuth» в раскрывающемся списке.

Нажмите Настроить экран согласия.
Настройка экрана согласия
Экран согласия — это экран, который отображается пользователю при входе в систему с помощью Google.
Выберите Тип пользователя как Внешний и нажмите Далее.
Введите следующие значения в следующие поля:
- Имя приложения: GAuth
- Авторизованные домены: g-auth-demo.com
- Ссылка на главную страницу приложения: http://g-auth-demo.com:8000
- Ссылка на Политику конфиденциальности приложений: http://g-auth-demo.com:8000/policy.

Нажмите Сохранить.
Теперь снова перейдите в раздел Учетные данные -> Создать учетные данные -> Идентификатор клиента OAuth.
Выберите «Тип приложения» как Веб-приложение и дайте своему клиенту имя.
Оставьте поле Авторизованные источники JavaScript пустым.
В разделе URI авторизованного перенаправления добавьте
http://g-auth-demo.com:8000/accounts/google/login/callback/

Нажмите СОЗДАТЬ, и вы получите OAuth Client IDи Client Secret. Запишите их.

Теперь, когда у нас есть необходимые учетные данные, мы можем настроить django-allauth.
Добавить суперпользователя
Бегать
python3 manage.py createsuperuser
добавьте имя пользователя, адрес электронной почты и пароль.
Настройка джанго-админа
Запустите сервер django, затем перейдите на портал администрирования django по адресу
g-auth-demo.com:8000/admin
Войдите, используя ранее созданные учетные данные суперпользователя.

перейдите на страницу Сайты, нажмите example.com и измените домен и отображаемое имя на:

после сохранения перейдите на главную страницу –› Социальные приложения –› ДОБАВИТЬ СОЦИАЛЬНОЕ ПРИЛОЖЕНИЕ.
Введите следующие значения в следующие поля:
- Поставщик: Google
- Имя: логин google
- Идентификатор клиента: ‹Идентификатор клиента, сгенерированный из консоли API›.
- Секретный ключ: ‹Секрет клиента, сгенерированный из консоли API›\
В поле Сайты дважды щелкните http://g-auth-demo.com:8000.

Нажмите Сохранить и все!
Теперь вы можете проверить это, создав простой HTML-файл и сопоставив его с представлением.
Вы можете найти полный код с очень простым примером: