Integrácia django-allauth, Google OAuth a GITHUB účet v Django
Krok 1: Inštalácia django-allauthgdfgdfgdfgdfgdf
- Nainštalujeme balík
django-allauth
pomocou pip.
pip install django-allauth
- Uisti sa, že máš, alebo doinštaluj knižnice potrebné pre django-alluath.
pip install requests
pip install PyJWT
pip install cryptography
Krok 2: Pridanie allauth do Django aplikácie
- Do súboru
settings.py
pridáme potrebné aplikácie:
INSTALLED_APPS = [
'django.contrib.sites', # Potrebné pre allauth
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
]
Krok 3: Konfigurácia authentication backendu
- V
settings.py
nastavíme authentication backendy:
AUTHENTICATION_BACKENDS = [
...
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
...
]
MIDDLEWARE = [
...
"allauth.account.middleware.AccountMiddleware",
...
]
Definujeme tiež presmerovanie po prihlásení:
LOGIN_REDIRECT_URL = '/'
ACCOUNT_LOGOUT_REDIRECT_URL = '/'
SITE_ID = 1 # Nastavíme podľa prostredia
Krok 4: Pridanie allauth URL do projektu
- Do súboru
urls.py
pridáme URL cesty pre django-allauth:
from django.urls import path, include
urlpatterns = [
path('accounts/', include('allauth.urls')),
]
Teraz môžeme otvoriť /accounts/login/
a Django nám ponúkne prihlasovanie.
Krok 5a: Vytvorenie OAuth aplikácie v Google Developer Console
- Prejdeme na Google Cloud Console.
- Vytvoríme nový projekt alebo vyberieme existujúci.
- Prejdeme na APIs & Services -> Credentials

Vtvorenie OAuth Client ID:
- Klikneme na Create Credentials -> OAuth client ID

- Vyberieme Web Application
- Pridáme Authorized redirect URIs:
http://localhost:8000/accounts/google/login/callback/
Pre produkčné prostredie (ak je stránka nasadená na doméne):
https://peter.pekny.online/accounts/google/login/callback/

- Po vytvorení skopírujeme Client ID a Client Secret.

Krok 5b: Vytvorenie OAuth aplikácie v GITHUB
- Prihlásime sa na svoj GITHUB
- Navigujeme sa na SETTINGS -> DEVELOPER SETTINGS -> OAuth APPS

- Spravíme nové api pre náš TESTOVACÍ projekt:

- Spravíme nové api pre náš PRODUKČNÝ projekt:

- Po registrácii si uložíme si client_id a secret do nášho projektu

Krok 6: Konfigurácia Google OAuth a Github OAuth v Django
- Do
settings.py
pridáme Google OAuth nastavenia:
# allauth (google, github)
SOCIALACCOUNT_PROVIDERS = {
# google account provider
'google': {
'APP': {
'client_id': config('SECRET_GOOGLE_ID'),
'secret': config('SECRET_GOOGLE_KEY'),
'key': ''
},
'SCOPE': ['profile', 'email'],
'AUTH_PARAMS': {'access_type': 'online'},
'METHOD': 'oauth2',
'VERIFIED_EMAIL': True,
},
# github account provider
'github': {
'APP': {
'client_id': config('SECRET_GITHUB_ID'),
'secret': config('SECRET_GITHUB_KEY'), },
},
}
- Pre produkčné prostredie je potrebné dodat nastavenie HTTP redirectov na HTTPS
- Do
settings_prod.py
dodáme tieto nastavenia
# PROD environment - HTTPS settings
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
- Nezabudnúť do produkčného
settings_prod.py
pridať
CSRF_TRUSTED_ORIGINS = [
"https://peter.pekny.online",
]
* Krok 7: Nastavenie aplikácie v Django Admin - !!! toto nieje potrebné !!! ale stojí to za neskoší test
- Otvárame Django Admin a prejdeme do sekcie "Social Applications".
- Klikneme na "Add Social Application" a vyplníme:
- Provider: Google
- Client ID: (vlož Google Client ID)
- Secret Key: (vlož Google Client Secret)
- Sites: Vyber
localhost:8000
alebopeter.pekny.online
Krok 8: Spustenie migrácií a testovanie
- Spustíme migrácie:
python manage.py makemigrations
python manage.py migrate
- Vytvoríme Django superužívateľa (ak ešte nemáme):
python manage.py createsuperuser
- Spustíme Django server:
python manage.py runserver
Teraz môžeme otvoriť http://localhost:8000/accounts/login/
alebo
https://peter.pekny.online/accounts/login/ kde už uvidíme tlačidlo na prihlásenie cez Google.
Krok 9: Do html templatu nacitame social login:
{% load socialaccount %}
<!-- Social login buttons GOOGLE-->
<a href="{% provider_login_url 'google' %}">
<button class="button-social" ><img src="https://upload.wikimedia.org/wikipedia/commons/archive/c/c1/20190925201609%21Google_%22G%22_logo.svg" alt="">Prihlásiť sa cez Google</button>
</a>
<!-- Social login buttons GITHUB-->
<a href="{% provider_login_url 'github' %}">
<button class="button-social" > <img src="https://upload.wikimedia.org/wikipedia/commons/a/ae/Github-desktop-logo-symbol.svg" alt="" />Prihlásiť sa cez GitHub</button>
</a>
Záver
Django projekt je teraz prepojený s Google OAuth pomocou django-allauth. Používatelia sa môžu prihlásiť cez svoje Google účty, čím zabezpečíme jednoduché a bezpečné prihlasovanie
Komentáre ku článku
Zatiaľ žiadne komentáre.