[python] Django의 소셜 로그인(Social login) 연동 방법은 어떻게 되는가?

소셜 로그인 연동

Django 애플리케이션에 소셜 로그인 기능을 추가하는 것은 사용자들에게 편리한 로그인 경로를 제공하는 좋은 방법입니다. Django는 다양한 소셜 로그인 프로바이더를 지원하며, 간단한 설정만으로 소셜 로그인을 쉽게 연동할 수 있습니다.

1. 소셜 로그인 프로바이더 등록

먼저, 연동하려는 소셜 로그인 프로바이더에 개발자 계정을 생성하고 등록해야 합니다. 각 소셜 로그인 프로바이더들은 공식 문서에서 등록 방법을 안내하고 있습니다. 로그인 프로바이더 별로 제공되는 클라이언트 ID와 시크릿 키를 받아두세요.

2. Django-allauth 설치

소셜 로그인을 구현하기 위해 Django-allauth 패키지를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

pip install django-allauth

3. Django-allauth 설정

settings.py 파일을 열어 다음과 같이 Django-allauth를 설정합니다.

INSTALLED_APPS = [
    ...
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    ...
]

AUTHENTICATION_BACKENDS = [
    ...
    'allauth.account.auth_backends.AuthenticationBackend',
    ...
]

SITE_ID = 1

LOGIN_REDIRECT_URL = '/'

이 설정은 Django-allauth를 사용해 소셜 로그인을 처리하기 위한 필수 설정입니다.

4. 소셜 로그인 프로바이더 설정

settings.py 파일에 다음과 같이 각 소셜 로그인 프로바이더의 클라이언트 ID와 시크릿 키를 추가합니다. 아래 예제는 Google 로그인 연동을 위한 설정입니다. 다른 소셜 로그인 프로바이더들은 해당 프로바이더에 맞는 설정을 추가해야 합니다.

SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'APP': {
            'client_id': 'YOUR CLIENT ID',
            'secret': 'YOUR SECRET KEY',
            'key': ''
        }
    },
    ...
}

5. URL 설정

urls.py 파일을 열어 URL 설정을 추가합니다. 아래 예제는 소셜 로그인을 위한 URL 패턴을 등록한 것입니다.

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

urlpatterns = [
    ...
    path('accounts/', include('allauth.urls')),
    path('admin/', admin.site.urls),
    ...
]

6. 템플릿 수정

소셜 로그인을 제공하는 템플릿 파일을 수정해야 합니다. 기본 템플릿 경로는 templates/account입니다. 다음 예제는 소셜 로그인 버튼을 추가한 템플릿 파일입니다.

<!-- login.html -->

...
<a href="{% provider_login_url 'google' %}">Google 로그인</a>
...

위와 같이 템플릿 파일을 수정하여 원하는 소셜 로그인 버튼을 추가할 수 있습니다.

이제 소셜 로그인이 연동된 Django 애플리케이션이 준비되었습니다. 사용자는 연동한 소셜 로그인 프로바이더로부터 로그인 할 수 있습니다.

참고 자료