[파이썬][Django] 소셜 로그인 통합 방법과 예제

Django에서 소셜 로그인을 통합하는 방법과 예제를 살펴보겠습니다. 소셜 로그인을 구현하려면 Django Allauth 또는 Django OAuth Toolkit과 같은 서드파티 패키지를 사용하거나, 소셜 로그인 API를 직접 구현할 수 있습니다. 여기서는 Django Allauth를 사용한 예제를 제공하겠습니다.

1. Django Allauth 설치

먼저 Django Allauth를 설치합니다.

pip install django-allauth

2. 설정 및 URL 설정

Django Allauth를 사용하려면 설정 및 URL 패턴을 설정해야 합니다. settings.py 파일에 다음과 같이 설정을 추가합니다:

# settings.py

INSTALLED_APPS = [
    # ...
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',  # 예제로 Google 소셜 로그인을 사용
    # ...
]

AUTHENTICATION_BACKENDS = (
    # ...
    'allauth.account.auth_backends.AuthenticationBackend',
    # ...
)

AUTHENTICATION_CLASSES = (
    # ...
    'allauth.socialaccount.providers.oauth2.client.OAuth2',
    # ...
)

# 소셜 로그인 관련 설정
SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'SCOPE': ['profile', 'email'],
        'AUTH_PARAMS': {'access_type': 'online'},
    },
}

그리고 URL 패턴도 설정합니다:

# urls.py

from allauth.socialaccount import views as socialaccount_views
from allauth.account.views import LoginView, LogoutView

urlpatterns = [
    # ...
    path('accounts/login/', LoginView.as_view(), name='account_login'),
    path('accounts/logout/', LogoutView.as_view(), name='account_logout'),
    path('accounts/', include('allauth.urls')),
    path('accounts/signup/', socialaccount_views.SignupView.as_view(), name='account_signup'),
]

3. 소셜 로그인 앱 설정

Google 소셜 로그인을 예로 들겠습니다. Google API Console에서 OAuth 2.0 클라이언트 ID 및 클라이언트 시크릿을 생성하고, Django 설정에 추가합니다:

# settings.py

SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'SCOPE': ['profile', 'email'],
        'AUTH_PARAMS': {'access_type': 'online'},
        'APP': {
            'client_id': 'your-client-id',
            'secret': 'your-client-secret',
            'key': ''
        }
    },
}

4. 템플릿 및 뷰 작성

로그인 및 로그아웃을 위한 템플릿 및 뷰를 작성합니다. Django Allauth는 이미 로그인 및 로그아웃 뷰를 제공하므로 별도의 작업이 필요하지 않습니다.

5. 템플릿에 소셜 로그인 버튼 추가

로그인 페이지에 소셜 로그인 버튼을 추가하려면 템플릿에서 다음과 같이 태그를 사용합니다:

<pre>
<code>

{% load socialaccount %}

<a href="{% provider_login_url 'google' %}" class="btn btn-danger btn-block">
    Login with Google
</a>

</code>
</pre>

6. 마이그레이션 및 실행

마이그레이션을 생성하고 데이터베이스를 업데이트합니다.

python manage.py makemigrations
python manage.py migrate

웹 애플리케이션을 실행하고 “Login with Google” 버튼을 통해 Google 소셜 로그인을 테스트할 수 있습니다.

이것은 간단한 예제이며, Django Allauth를 통해 다양한 소셜 로그인 제공 업체 (Google, Facebook, Twitter 등)를 통합할 수 있습니다. 필요한 경우 각 소셜 로그인 제공 업체의 설정을 추가하고 템플릿을 사용자 정의할 수 있습니다.