Project/project1

Project04_장고 소셜 로그인 구현 allauth

데브플레이버 2023. 5. 23. 10:01
반응형

소셜로그인 구현 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

 

반응형