Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Django 프로젝트에 GitHub OAuth 소셜 로그인 구현하기

많은 개발자 웹사이트에서 GitHub 소셜 로그인 기능을 쉽게 찾아볼 수 있습니다. 사용자 입장에서도 회원가입 절차 없이 클릭 한 번으로 로그인할 수 있어 매우 편리합니다. 이 글에서는 django-allauth 라이브러리를 활용해 Django 웹사이트에 GitHub OAuth 인증을 추가하는 방법을 단계별로 살펴보겠습니다.

1단계: GitHub OAuth 애플리케이션 등록

먼저 https://github.com/settings/developers/에 접속하여 새로운 OAuth 애플리케이션을 생성하고, 아래 두 개의 URL을 등록합니다.

  • https://127.0.0.1:8000/ — 홈페이지 URL
  • https://127.0.0.1:8000/accounts/github/login/callback — 인증 콜백 URL

애플리케이션 생성이 완료되면 Client ID시크릿 키(Client Secret)가 발급됩니다. 두 값을 모두 복사해 두세요. 이제 코딩 단계로 넘어가겠습니다.

2단계: django-allauth 설치 및 설정

다음 명령어로 django-allauth 라이브러리를 설치합니다.

pip install django-allauth

settings.py 파일에 다음 코드를 추가합니다.

INSTALLED_APPS = [    ##################    #    #    #    #     'django.contrib.sites',    'allauth',    'allauth.account',    'allauth.socialaccount',    'allauth.socialaccount.providers.github',    'githubAuthentication'] SITE_ID = 1AUTHENTICATION_BACKENDS= [    'django.contrib.auth.backends.ModelBackend',    'allauth.account.auth_backends.AuthenticationBackend'] LOGIN_REDIRECT_URL="https://github.com"

INSTALLED_APPS에는 필요한 allauth 관련 앱들과 GitHub 프로바이더를 등록했습니다. AUTHENTICATION_BACKENDS에는 Django의 기본 인증 백엔드와 함께 allauth의 인증 백엔드를 추가했습니다. 마지막으로 LOGIN_REDIRECT_URL은 로그인 성공 후 이동할 리디렉션 주소를 지정합니다.

프로젝트 루트의 urls.py

from django.contrib import adminfrom django.urls import path,include urlpatterns = [    path('admin/', admin.site.urls),     # allauth 라이브러리 경로 — 그대로 복사해서 사용하세요    path('accounts/', include('allauth.urls')),     # 직접 만든 앱 경로    path('', include("githubAuthentication.urls"))]

첫 번째 경로는 GitHub 로그인을 활성화하기 위해 allauth 라이브러리가 요구하는 기본 경로이고, 두 번째는 우리가 만든 앱의 경로입니다.

3단계: 관리자 페이지에서 소셜 애플리케이션 등록

개발 서버를 실행한 뒤 https://localhost:8000/admin에 접속하여 Social applications(소셜 애플리케이션) 메뉴로 이동합니다.

새 애플리케이션을 추가합니다.

Django 프로젝트에 GitHub OAuth 소셜 로그인 구현하기

앞서 복사해 둔 Client ID시크릿 키를 붙여넣고, 이름 필드에는 애플리케이션 이름을 입력합니다. 공급자(Provider)는 github를 선택하세요.

그다음 Sites 항목에서 example.com을 클릭한 뒤 화살표 버튼을 눌러 오른쪽 목록으로 옮기고 저장합니다. 이 과정을 통해 GitHub가 Django 프로젝트의 인증 백엔드로 등록됩니다.

4단계: 프론트엔드 템플릿 작성

templates 폴더 안에 home.html 파일을 생성하고 다음 내용을 추가합니다.

<!DOCTYPE html><html>    <head>        <title>tut</title>    </head>    <body>        {% load socialaccount %}        {% providers_media_js %}        <a href="{% provider_login_url 'github' method='js_sdk' %}?next=https://github.com">login with github</a>    </body></html>

여기서는 템플릿 태그를 통해 allauth 라이브러리를 프론트엔드에 로드하고 필요한 JS를 렌더링했습니다. <a> 태그에는 GitHub 로그인 페이지로 연결되는 URL을 지정했습니다.

view.py

from django.shortcuts import render # Create your views here.def home(request):    return render(request,"home.html")

위 뷰 함수를 통해 프론트엔드 페이지를 렌더링합니다.

앱의 urls.py

from django.urls import path,includefrom . import viewsurlpatterns = [    path('',views.home, name="Home" )]

URL 패턴을 설정하고 뷰와 연결했습니다.

실행 결과

모든 설정이 끝났습니다. 개발 서버를 실행하고 홈페이지에 접속하면 "login with github" 링크가 표시됩니다. 링크를 클릭하면 GitHub 로그인 페이지로 이동하고, 인증에 성공하면 설정해 둔 리디렉션 URL로 이동합니다.

Django 프로젝트에 GitHub OAuth 소셜 로그인 구현하기

마무리 및 참고 사항

실제 서비스를 배포할 때는 127.0.0.1 대신 실제 도메인 주소를 GitHub OAuth 애플리케이션에 등록해야 하며, Client Secret이 외부에 노출되지 않도록 환경 변수 등으로 안전하게 관리하는 것이 좋습니다. 또한 django-allauth는 Google, Kakao 등 다양한 소셜 로그인 프로바이더를 지원하므로, 같은 방식으로 손쉽게 확장할 수 있다는 점도 기억해 두세요.