DjangoGenelPythonYazılım

Google OAuth kullanarak Django’da Kullanıcı Kaydı

oogle OAuth kullanarak Django'da Kullanıcı Kaydı

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

migrateArdından, şu komutu kullanarak veritabanı geçişlerini uygulayın :

$ python manage.py migrate

içine oauth_appekleyerek oauth_projectprojeye INSTALLED_APPSkaydedin 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-allauthiçine ekleyerek INSTALLED_APPSkayı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.googleOAuth 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.pyaş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',
        }
    }
}

SCOPEGoogle 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.htmlve 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.

Google OAuth kullanarak Django'da Kullanıcı Kaydı

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

Google OAuth kullanarak Django'da Kullanıcı Kaydı

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:8000Yetkili JavaScript kökenleri altında .
  • http://127.0.0.1:8000/accounts/google/login/callback/Yetkili yönlendirme URI’leri altında .
Google OAuth kullanarak Django'da Kullanıcı Kaydı

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 Sitesi olarak girin . ekleyelim 127.0.0.1:8000

Google OAuth kullanarak Django'da Kullanıcı Kaydı

Ardından, Social Applications tıklayın ekle ve ayrıntıları aşağıdaki gibi doldurun:

  1. Sağlayıcı: Google
  2. İsim: OAuth Uygulaması
  3. Müşteri kimliği: <4. adımda oluşturduğunuz müşteri kimliği>
  4. Gizli anahtar: <4. adımda oluşturduğunuz Gizli anahtar>
  5. Siteler: 127.0.0.1:8000
Google OAuth kullanarak Django'da Kullanıcı Kaydı

Ş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 OAuth kullanarak Django'da Kullanıcı Kaydı

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.

Kıvırcık

Yazılım dersleri üzerine yazı paylaşacağım.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu