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 등)를 통합할 수 있습니다. 필요한 경우 각 소셜 로그인 제공 업체의 설정을 추가하고 템플릿을 사용자 정의할 수 있습니다.