반응형
소셜로그인 구현 allauth
장고에서 allauth라는 장고패키지를 이용하면 소셜로그인을 구현 할 수 있다.
pip install djangorestframework
pip install djangorestframework-simplejwt
pip install django-allauth
자주 사용하는 소셜로그인에는 네이버, 카카오, 구글이 있을것이며 코딩과 관련된 사이트라면 깃허브까지 범용성 있게 사용 가능하다고 생각된다. 이 소셜로그인들을 allauth 패키지 내에서 서비스 명을 찾아본다.
장고에는 모델, 뷰, 템플릿 등이 있는데 이 중 views.py를 다음과 같이 추가해본다.
# 소셜 로그인
BASE_URL = 'http://localhost:8000/api/v1/accounts/rest-auth/'
KAKAO_CALLBACK_URI = BASE_URL + 'kakao/callback/'
NAVER_CALLBACK_URI = BASE_URL + 'naver/callback/'
GOOGLE_CALLBACK_URI = BASE_URL + 'google/callback/'
GITHUB_CALLBACK_URI = BASE_URL + 'github/callback/'
class KakaoLogin(SocialLoginView):
adapter_class = KakaoOAuth2Adapter
callbakc_url = KAKAO_CALLBACK_URI
client_class = OAuth2Client
serializer_class = SocialLoginSerializer
class NaverLogin(SocialLoginView):
adapter_class = NaverOAuth2Adapter
callback_url = NAVER_CALLBACK_URI
client_class = OAuth2Client
serializer_class = SocialLoginSerializer
class GithubLogin(SocialLoginView):
adapter_class = GitHubOAuth2Adapter
callback_url = GITHUB_CALLBACK_URI
client_class = OAuth2Client
serializer_class = SocialLoginSerializer
class GoogleLogin(SocialLoginView):
adapter_class = GoogleOAuth2Adapter
callback_url = GOOGLE_CALLBACK_URI
client_class = OAuth2Client
serializer_class = SocialLoginSerializer
이후 어떤 url을 통해 접근을 할 것인지를 매핑해줘야하는데 urls.py에서 수정을 한다.
urlpatterns =[
path('rest-auth/kakao/', views.KakaoLogin.as_view(), name='kakao'),
path('rest-auth/naver/', views.NaverLogin.as_view(), name='naver'),
path('rest-auth/google/', views.GoogleLogin.as_view(), name='google'),
path('rest-auth/github/', views.GithubLogin.as_view(), name='github'),
]
네이버 아이디가 없는 사람이 없겠지만서도 요즘 카카오톡 안쓰는 사람 찾는게 더 어렵기 때문에 카카오 인증으로 추가한다.
동의항목 설정
애플리케이션 이름, 사업자명, 아이콘등을 먼저 받으며 내 애플리케이션 → 제품설정 → 카카오로그인 → 동의항목에서 제공받을 항목을 선택할 수가 있다.
django admin 등록
위에서 설정해놓은 값들을 django admin에서 등록을 해주면 쉽게 진행을 할 수 있다.
127.0.0.1:8000/admin 또는 localhost:8000/admin 으로 접근하여 소셜계정 - 소셜 애플리케이션 에서 등록한다.
서비스에서 발급한 클라이언트 아이디, 키 값을 넣어주면 되고, 카카오 로그인은 rest-api키를 등록해주면 완료.
참고 블로그
https://velog.io/@heyoni/Django-Rest-Framework-소셜로그인-구현하기-google-naver-kakao-github
반응형
'Project > project1' 카테고리의 다른 글
Project03_주제 선정 + 역할 분담 (0) | 2023.05.20 |
---|---|
Project02_AWS EC2 접속 및 파일 관리 (0) | 2023.05.14 |
Project01_협업 레포지토리 생성 및 가상환경 설정 (0) | 2023.05.12 |