SOCO

Django로 kakao 소셜 로그인 구현 본문

백/Django

Django로 kakao 소셜 로그인 구현

ssooda 2021. 8. 21. 03:16

장고와 플라스크에 대한 경험이 아직 부족하지만, 지금까지 느낀 바로는

장고와 플라스크는 정말 서로의 색(장단점)이 뚜렷한 것 같습니다.

 

플라스크는 micro framework라는 이름에 걸맞게, python을 배웠다면 별도로 배울 내용이 적지만, 그만큼 신경써야할 것이 많고,

장고는 macro framework 답게 많은 기능을 제공해주지만, 그만큼 공부해야할 양이 많은 것 같습니다.

 

프로젝트를 시작하면 대부분 회원가입, 로그인 부분을 먼저 다루게 되는 것 같습니다.

프로젝트가 어느 정도 진행되고 나면 기능을 보완/보강하게 되는데

최근에 소셜 로그인에 관심이 생겨 django 프로젝트에 kakao 소셜 로그인 기능을 도입해보았습니다.

 

소셜로그인에 대한 설명은 간단하게 넘어가도록 하겠습니다.

 

해당 포스팅은 아래 블로그의 내용을 많이 참고하였습니다 !

https://rollonoa.tistory.com/entry/Allauth를-이용한-Django에서-소셜로그인-구현하기

 

Allauth를 이용한 Django에서 소셜로그인 구현하기

오늘은 Django에서 Allauth 를 이용하여 소셜로그인을 구현해 보도록 하겠습니다. 매우 좋은 라이브러리 입니다. 공식 문서는 여기(https://django-allauth.readthedocs.io/en/latest/index.html)에서 찾아 보실수..

rollonoa.tistory.com

 

1.  소셜로그인이란

포털, 사회관계망 서비스(SNS) 가입자가 해당 ID로 다른 웹사이트나 애플리케이션에 접속하는 기능을 말합니다.

예) 웹사이트나 모바일 앱에 새롭게 가입을 하려고 할 때 볼 수 있는 카카오로 계속하기, Google로 계속하기 등

 

 

2.  기능구현

: Django의 Allauth 이용 : https://django-allauth.readthedocs.io/en/latest/index.html

 

Welcome to django-allauth! — django-allauth 0.43.0 documentation

© Copyright 2017, Raymond Penners Revision cc0dfb7b.

django-allauth.readthedocs.io

1 ) 라이브러리 설치

pip install django-allauth

+ 설치된 라이브러리 확인

pip list

 

2) settings.py와 urls.py 수정

# settings.py


AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',

    'allauth.account.auth_backends.AuthenticationBackend',
)



INSTALLED_APPS = [

    # 카카오톡 소셜 로그인 관련 부분
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.kakao',
    
]



SITE_ID = 1


LOGIN_REDIRECT_URL = '/'  # 로그인 후 리다이렉트 될 경로
ACCOUNT_LOGOUT_REDIRECT_URL = reverse_lazy('accountapp:login')  
ACCOUNT_LOGOUT_ON_GET = True

 

# urls.py

urlpatterns = [
	
    # 소셜로그인 관련 url
    re_path(r'^accounts/', include('accountapp.urls')),
    re_path(r'^accounts/', include('allauth.urls')),

]

 

3) DB Migrate

python manage.py makemigrations
python manage.py migrate

 

4) 서버 실행

python manage.py runserver

 

5) 관리자 페이지 : http://<본인 url>/admin

관리자 페이지에 들어가면 이런 부분이 자동으로 추가되어있습니다.

소셜 어플리케이션을 추가해줍니다.

example.com은 기본으로 설정되어 있고, 나머지 2개는 제가 따로 추가한 site입니다.

  1. 제공자 : kakao
  2. 이름: 원하는 이름
  3. 클라이언트 아이디: 카카오 디벨로스에서 REST API 키
  4. 시크릿 키: 카카오톡은 시크릿키를 사용하지 않으므로 아무거나 입력해도 괜찮아요 !
  5. Sites: example.com을 선택

- example.com 만 선택해서 저장해도 작동이 잘 됩니다 !!

 

6) 템플릿에 추가

<!-- login.html -->

{% load socialaccount %}

<a href="{% provider_login_url 'kakao' method='oauth2' %}">
카카오톡 회원가입
</a>

3. 실수 / 오류

1) 관리자 창에서 '저장'버튼 클릭 -> CSRF 검증 오류

뒤로가기 후 다시 돌아와서 저장버튼을 클릭히였더니 문제가 해결되었습니다.

문제가 발생한 이유에 대해서 더 알아보고 추가하도록 하겠습니다. 

 

2) allauth app을 만드는 실수

urls.py에서 allauth.urls를 지정하는 것을 보고 allauth앱을 만드는 실수를 하였습니다.

django startapp allauth

하지만 별도로 앱을 만들지 않아도 정상적으로 작동하는 것을 확인할 수 있었습니다.

 

3) KOE006 오류

카카오 디벨로퍼스에서 Redirect URI에

http://127.0.0.1:8000/accounts/kakao/login/callback/을 추가하였더니 문제가 해결되었습니다.

 

 

감사합니다 ~! 

' > Django' 카테고리의 다른 글

장고 시작 !  (0) 2021.07.21