Computer >> Máy Tính >  >> Lập trình >> Python

Xác thực Google trong Django

Trong nhiều trang web của nhà phát triển, chúng tôi nhận thấy xác thực xã hội của Google rất hữu ích. Trong bài viết này, chúng ta sẽ xem cách tạo dự án đăng nhập Django Google.

  • Đầu tiên, hãy truy cập https://console.cloud.google.com/apis/dashboard và tạo một dự án.

  • Đi tới màn hình chấp thuận Oauth, tạo màn hình và lưu và tiếp tục.

  • Đi tới thông tin đăng nhập và nhấp vào "tạo thông tin đăng nhập", sau đó nhấp vào "ID ứng dụng khách OAuth":

  • Sau đó, chọn ứng dụng web và thêm hai URL này -

  • https://127.0.0.1:8000/
  • https://127.0.0.1:8000/accounts/github/login/callback/

Bây giờ, bạn sẽ nhận được ID khách hàng và khóa bí mật, hãy giữ chúng an toàn trong tệp của bạn.

Ví dụ

Tạo một dự án Django và một ứng dụng.

Trong settings.py -

SITE_ID = 1
LOGIN_REDIRECT_URL = "/"

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   "django.contrib.sites", # <--
   "allauth", # <--
   "allauth.account", # <--
   "allauth.socialaccount", # <--
   "allauth.socialaccount.providers.google",
   "googleauthentication" #this is my app name ,you can name your app anything you want
]
SOCIALACCOUNT_PROVIDERS = {
   'google': {
      'SCOPE': [
         'profile',
         'email',
      ],
      'AUTH_PARAMS': {
         'access_type': 'online',
      }
   }
}

#add this in the end of file
AUTHENTICATION_BACKENDS = (
   "django.contrib.auth.backends.ModelBackend",
   "allauth.account.auth_backends.AuthenticationBackend",
)

Ở đây, chúng tôi đã xác định một URL chuyển hướng. Trong ỨNG DỤNG ĐÃ CÀI ĐẶT, chúng tôi đã xác định các phụ trợ quan trọng mà chúng tôi sẽ sử dụng để xác thực. Sau đó, chúng tôi xác định nhà cung cấp tài khoản xã hội sẽ cho biết chúng tôi nên sử dụng những gì để đăng nhập (ở đây chúng tôi đang sử dụng Google). Chúng tôi cũng xác định dữ liệu nào của người dùng nên lưu trữ.

Bây giờ, trong urls.py của dự án , thêm phần sau -

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
   path('admin/', admin.site.urls),
   path("accounts/", include("allauth.urls")), #most important
   path('',include("googleauthentication.urls")) #my app urls
]

Ở đây, chúng tôi đã thêm đường dẫn mặc định cần thêm vào; nó là đường dẫn thư viện allauth để kích hoạt đăng nhập Google. Cái thứ hai là đường dẫn ứng dụng mà chúng tôi đã tạo.

Trong urls.py của ứng dụng -

from django.urls import path
from . import views
urlpatterns = [
   path('',views.home),
]

Tại đây, chúng tôi thiết lập url của mình và hiển thị các quan điểm của chúng tôi về url trang chủ.

Trong view.py -

from django.shortcuts import render

# Create your views here.
def home(request):
   return render(request,'home.html')

Chúng tôi chỉ hiển thị giao diện người dùng ở đây.

Tạo mẫu trong thư mục chính của ứng dụng và thêm tệp home.html với nội dung sau -

<!DOCTYPE html>
<html>
   <head>
      <title>Google Registration</title>
   </head>
   <body>
      {% load socialaccount %}
      <h1>My Google Login Project</h1>
      <a href="{% provider_login_url 'google'%}?next=/">Login with Google</a>
   </body>
</html>

Tại đây, chúng tôi đã hiển thị JS và tải allauth thư viện trên giao diện người dùng. Trong chúng tôi đã cung cấp trang đăng nhập Google mà trên đó chúng tôi thiết lập trang đăng nhập Google mặc định của mình.

Bây giờ, hãy chạy các lệnh sau trên thiết bị đầu cuối -

python manage.py makemigrations
python manage.py migrate

Tiếp theo, tạo siêu người dùng .

python manage.py createsuperuser

Sau đó, khởi động máy chủ và chuyển đến bảng quản trị. Truy cập Sites và thêm một trang web có tên url và tên hiển thị:https://127.0.0.1:8000

Chuyển đến Ứng dụng xã hội và thêm ứng dụng. Chọn trang web bạn đã thêm trước đó -

Xác thực Google trong Django

Điều này sẽ đăng ký Google trên dự án Django của bạn như một chương trình phụ trợ xác thực. Mọi thứ đã được thiết lập, bây giờ bạn có thể tiến hành kiểm tra kết quả đầu ra.

Đầu ra

Xác thực Google trong Django