allauth 공식 문서
위의 문서를 보고 내용을 정리해서 실제 프로젝트에 소셜 로그인을 적용하는 법을 알아보려합니다.
pip install django-allauth
으로 allauth 패키지를 설치해줍니다.
그 후 settings.py에 있는 TEMPLATES 리스트에
# `allauth` needs this from django
'django.template.context_processors.request',
를 추가해줍니다.
그리고 settings.py에서 로그인 과정을 처리해줄 백엔드를 알려주는 리스트를 다음과 같이 설정해줍니다. 그리고 SITE_ID = 1이라 설정해주시면 됩니다. SITE_ID는 이후에 사이트 어플리케이션에 관한 쿼리를 이용할 때 PK로 사용됩니다. 관련 내용은
AUTHENTICATION_BACKENDS = [
...
# Needed to login by username in Django admin, regardless of `allauth`
'django.contrib.auth.backends.ModelBackend',
# `allauth` specific authentication methods, such as login by e-mail
'allauth.account.auth_backends.AuthenticationBackend',
...
]
SITE_ID = 1
그리고 settings.py에 있는 INSTALLED_APPS에는
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
#providers에 있는 것들 중에서 사용하려는 소셜 로그인을 골라줍니다.
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.instagram',
'allauth.socialaccount.providers.kakao',
'allauth.socialaccount.providers.naver',
저는 구글과 인스타그램, 카카오, 네이버를 사용해서 실습해볼 예정이라서 이렇게 3개만 넣었습니다.
그 후에 settings.py 가 있는 디렉터리에 존재하는 urls.py에 아래의 코드를 추가해줍니다.
urlpatterns = [
...
path('accounts/', include('allauth.urls')),
...
]
이렇게 하면 accounts/로 시작하는 요청들을 allauth에 있는 url들을 이용해서 처리할 수 있습니다.
사용가능한 url들은 이 글에서 설정한 것들만 해놓으면 위와 같습니다.
그 후 python manage.py migrate를 해줍니다.
admin 페이지에 들어가면 위와 같은 테이블들이 생성되어있는 것을 볼 수 있습니다.
기본적인 세팅이 끝났습니다. 다음 글에서는 본격적으로 어떻게 소셜 로그인을 적용할 수 있는지 확인해보겠습니다.