django - 소셜로그인(카카오)

7683 단어 djangoTILTIL

2차 프로젝트를 진행하며 로그인/회원가입을 진행하는 중 kakao developers를 활용하여
소셜로그인을 구현해보았다.
구현 해보며 배운점을 블로그에 남겨 볼까 한다.

배운점 ✍️

  • kakao developers 활용법 (카카오에 발행한 토큰을 활용하여 카카오에 정보 받는 법)
  • 프론트와 소통방법 (headers에 담겨 준 토큰 받는 법)

내가 짠 코드 ✍️

class KakaoView(View):
    def post(self, request): 
        try:
            access_token = request.headers['Authorization']
            headers      = ({'Authorization' : f'Bearer {access_token}'})
            url          = 'https://kapi.kakao.com/v2/user/me'
            data         = requests.get(url, headers=headers).json()

            if not User.objects.filter(social_id = data['id']).exists():
                usertype    = UserType.objects.get(name='kakao')
                new_user    = User.objects.create(
                    social_id   = data['id'],
                    nickname    = data['properties']['nickname'],
                    usertype    = usertype
                    )
                token = jwt.encode({'id': new_user.id}, SECRET_KEY, algorithm)
                return JsonResponse({'message':'KAKAO_SIGNUP_SUCCESS', 'TOKEN':token.decode()}, status=200)
            exist_user = User.objects.get(social_id=data['id'])
            token      = jwt.encode({'id': exist_user.id}, SECRET_KEY, algorithm)
            return JsonResponse({'message':'KAKAO_SIGNIN_SUCCESS', 'TOKEN':token.decode()}, status=200)
        except KeyError:
            return JsonResponse({'message':'KEY_ERROR'}, status=401)

좋은 웹페이지 즐겨찾기