
Google OAuth kullanarak Django’da Kullanıcı Kaydı | Açık Yetkilendirme (OAuth), web sitelerinin veya uygulamaların kullanıcı bilgilerini bir kullanıcı parolası verilmeden diğer web siteleriyle paylaşmasına olanak tanıyan bir hizmettir. Kullanıcılar, başka kimlik bilgileri oluşturmadan aynı hesapla birden fazla web sitesinde oturum açabilir.
En popüler OAuth servis sağlayıcılarından bazıları Google, Facebook ve GitHub’dır. Bu eğiticide, kullanıcıları Google OAuth kullanarak bir Django uygulamasına kaydetmeye bakacağız.
Bu öğreticiyi takip etmek için makinenizde Python3 kurulu olmalıdır.
Adım 1 – Yeni bir Django projesi oluşturun ve kurun
Aşağıdaki komutu kullanarak yeni bir sanal ortam oluşturun.
$ python3 -m venv virtual
Aşağıdaki komutu çalıştırarak oluşturulan sanal ortamı etkinleştirin.
$ source virtual/bin/activate
Ardından, aşağıdaki komutu çalıştırarak Django’nun en son sürümünü PyPI’den yükleyin.
$ pip install django
Ardından, şu komutu kullanarak yeni bir Django projesi oluşturun:
$ django-admin startproject oauth_project .
Ardından, şu komutu kullanarak bir Django uygulaması oluşturun:
$ python manage.py startapp oauth_app
migrate
Ardından, şu komutu kullanarak veritabanı geçişlerini uygulayın :
$ python manage.py migrate
içine oauth_app
ekleyerek oauth_project
projeye INSTALLED_APPS
kaydedin settings.py
.
djangooauth/settings.py
INSTALLED_APPS = [
#...
'django.contrib.sites',
'oauth_app',
]
Adım 2 – django-allauth
kuralım
Google OAuth özelliklerini uygulamamıza entegre etmek için Django-allauth kullanacağız .
Komutu çalıştırarak paketi Pypi’den yükleyin:
$ pip install django-allauth
Daha sonra django-allauth
içine ekleyerek INSTALLED_APPS
kayıt olun settings.py
.
djangooauth/settings.py
INSTALLED_APPS = [
#...
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
]
Birçok OAuth sağlayıcısını desteklediğinden , satır allauth.socialaccount.providers.google
OAuth sağlayıcısını belirtir . django-allauth
Yapılandırmalarda django-allauth
uygulamamız için kimlik doğrulama arka ucu olarak da ayarlayacağız .AUTHENTICATION_BACKEND
‘nin altına settings.py
aşağıdaki kodu ekleyin:
djangooauth/settings.py
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend'
]
Ardından, SOCIALACCOUNT_PROVIDERS
yapılandırmalar altında Google’ı OAuth sağlayıcısı olarak ayarlayın.
djangooauth/settings.py
SOCIALACCOUNT_PROVIDERS = {
'google': {
'SCOPE': [
'profile',
'email',
],
'AUTH_PARAMS': {
'access_type': 'online',
}
}
}
SCOPE
Google API’lerinden ne istendiğini belirtir . Kapsam belirtilmemişse, varsayılan olarak profile
. Arka planda kimlik doğrulamasını yenilemek için olarak AUTH_PARAMS['access_type']
ayarlayın offline
.
Ardından bir site kimliği ekleyin ve başarılı bir oturum açma veya oturum kapatma işleminden sonra kullanıcıları temel rotaya yönlendirin.
djangooauth/settings.py
SITE_ID = 2
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'
3. Adım – Templates oluşturun ve yapılandırın
Google ile Giriş Yap düğmesini görüntülemek için Django şablonlarını kullanacağız . templates
Temel dizininizde adı verilen yeni bir klasör oluşturun . Ardından klasörün index.html
içinde bir dosya oluşturun templates
.
$ mkdir templates
$ cd templates
$ touch index.html
Açın index.html
ve aşağıdaki kodu girin:
templates/index.html
{% load socialaccount %}
<html>
<body>
<h1>My Google OAuth Project </h1>
{% if user.is_authenticated %}
<p>Welcome, You are logged in as {{ user.username }}</p>
{% else %}
<a href="{% provider_login_url 'google' %}">Login With Google</a>
{% endif %}
</body>
</html>
Yukarıdaki kod, kullanıcının kimliğinin doğrulanıp doğrulanmadığını kontrol eder. Doğruysa, kullanıcı adı görüntülenir. Değilse, “ Google ile Giriş Yap ” bağlantısı görüntülenir. Bağlantıya tıklandığında, kullanıcı Google OAuth iletişim kutusuna yönlendirilecektir.
Ardından, bu templates
klasörü TEMPLATES
yapılandırmalara kaydedin settings.py
.
djangooauth/settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True,
#...
}
]
Adım 4 – OAuth URL’lerini Yapılandırın
Projeyi açın ve urls.py
aşağıdaki kodu ekleyin.
djangooauth/urls.py
#...
from django.urls import path, include
from django.views.generic import TemplateView
from django.contrib.auth.views import LogoutView
urlpatterns = [
#...
path('', TemplateView.as_view(template_name="index.html")),
path('accounts/', include('allauth.urls')),
path('logout', LogoutView.as_view()),
]
Şablonumuzu gösterecek bir temel rota ekliyoruz index.html
. /accounts
Ayrıca Django-allauth URL’lerini “içeren” bir yol da ekliyoruz . Tüm OAuth işlemleri bu rota altında gerçekleştirilecektir. Ayrıca varsayılan Django oturum kapatma görünümünü de /logout
.
Adım 4 – Yeni bir Google API projesi oluşturun ve yapılandırın
Google Developer APIs Console’a gidin ve yeni bir proje oluşturun.

Ardından, OAuth izin ekranını doldurarak uygulamanızı kaydedin .

Ardından, Kimlik Bilgileri altında yeni bir OAuth istemci kimliği oluşturun . Uygulama türü için Web uygulamasını seçin .
Sonra Ekleyelim:
http://127.0.0.1:8000
Yetkili JavaScript kökenleri altında .http://127.0.0.1:8000/accounts/google/login/callback/
Yetkili yönlendirme URI’leri altında .

Başarılı bir OAuth istemci kimliği oluşturulduktan sonra, kopyalayın Your Client ID
ve Your Client Secret
5. adımda bunlara ihtiyacınız olacak.
Adım 5 – Django yöneticisine bir sosyal uygulama ekleyin
Şimdi, bu komutu kullanarak geçişleri yapın:
$ python manage.py migrate
Ardından, bir terminalde aşağıdaki komutu çalıştırarak bir süper kullanıcı oluşturun.
$ python manage.py createsuperuser
Uygulamayı aşağıdakileri kullanarak çalıştırın:
$ python manage.py runserver
http://127.0.0.1:8000/admin dosyasını açın ve Django Admin’de oturum açın. Tıklayın ve hem Alan adı hem de Görünen ad
Sites
i olarak girin . ekleyelim
127.0.0.1:8000

Ardından, Social Applications
tıklayın ekle
ve ayrıntıları aşağıdaki gibi doldurun:
- Sağlayıcı: Google
- İsim: OAuth Uygulaması
- Müşteri kimliği: <4. adımda oluşturduğunuz müşteri kimliği>
- Gizli anahtar: <4. adımda oluşturduğunuz Gizli anahtar>
- Siteler: 127.0.0.1:8000

Şu anda bir süper kullanıcı olarak giriş yaptığınız için, Google hesabınızı kullanarak çıkış yapın ve tekrar giriş yapın.
http://127.0.0.1:8000/accounts/google/login/ adresinde bir hata alırsanız SocialApp matching query does not exist
, bu, Django admin’de oluşturduğunuz sitenin kimliğinin settings.py
. Değerle oynamayı düşünün SITE_ID
.
Örneğin: SITE_ID = 3
, vb.
Daha fazla bilgi için Django “siteleri” çerçeve belgelerine bakın .

Google ile giriş yaptıktan sonra, Google’dan alınan kullanıcı bilgilerini şu adresten kontrol edebilirsiniz: http://127.0.0.1:8000/admin/socialaccount/socialaccount/
.
Google, kullanıcıları hakkında çok az bilgi sağlar. Google’dan daha fazla kullanıcı bilgisi almak için uygulamanızın doğrulanması gerekiyor .
Google OAuth kullanarak Django’da Kullanıcı Kaydı yazımız bu kadardır, Django python kullanarak kullanıcı girişi bu kadar kolay, iyi kodlamalar dilerim.