django
[django] 소셜로그인(카카오)
support_u
2023. 5. 2. 03:05
1. 라이브러리 설치
pip install django-allauth
2. settings.py 설정
INSTALLED_APPS = [
'django.contrib.sites',
# allauth
'allauth',
'allauth.account',
'allauth.socialaccount',
# providers(카카오가 아니어도, 네이버, 구글, 페이스북 가능)
'allauth.socialaccount.providers.kakao',
]
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
SITE_ID = 1
LOGIN_REDIRECT_URL = '/' # 로그인 후 리다이렉트 될 경로
ACCOUNT_LOGOUT_REDIRECT_URL = reverse_lazy('accountapp:login')
3. urls.py 수정
앱을 별도로 만들 필요는 없다.
path('accounts/', include('accounts.urls')),
path('accounts/', include('allauth.urls')),
4. kakao developers 사이트 접속
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
5. 애플리케이션 추가 후 Redirect URL 등록하러가기 클릭
6. 원하는 플랫폼에 사이트 도메인 등록
7. 활성화 설정 on & redirect URL 설정(중요)
나는 http://127.0.0.1:8000/accounts/kakao/login/callback/로 설정하였음.
8. 동의항목에서 받아올 값 설정
9. superuser로 admin사이트에 들어가서 sties에서 아래처럼 자신의 url로 사이트 변경을 해준다.
python manage.py createsuperuser
10. 소셜계정 - 소셜어플리케이션 추가에서 아래와 같이 설정
카카오는 비밀키가 따로 없으니 아무거나 입력
site는 위 설정한 사이트 하나만 넣어주면 됨
11. templates에 링크를 걸어준다
{% load socialaccount %}
<a href="{% provider_login_url 'kakao' method='oauth2' %}">
카카오톡 회원가입
</a>
+ views.py의 login에서 자동로그인을 한 경우 인증수단이 많이지면 오류 발생
아래 오류 발생
You have multiple authentication backends configured and therefore must provide the `backend` argument or set the `backend` attribute on the user.
사용자 인증 백엔드를 정해줄 필요가 있다.
def signup(request):
if request.user.is_authenticated:
return redirect('posts:index')
if request.method == 'POST':
form = CustomUserUserCreationForm(request.POST)
if form.is_valid():
user = form.save()
# 백엔드 지정구문 추가
user.backend = 'django.contrib.auth.backends.ModelBackend'
auth_login(request, user)
return redirect('posts:index')
else:
form = CustomUserUserCreationForm()
return render(request, 'accounts/signup.html', {'form':form})