지난 글 에서는 allauth
로 카카오 로그인을 진행하였는데 직접 oauth2 로그인을 구현해보았다.
카카오 로그인 api 동작방식과 카카오 애플리케이션 추가 과정은 지난 글에 있어서 생략하고..
path('accounts/kakao/login/callback/', v.kakao_login),
카카오에 등록해준 redirect uri
를 path에 등록해 준다.
def kakao_login(request):
#settings에 등록해둔 rest_api_key와 redirect_uri
REST_API_KEY = getattr(settings, 'KAKAO_REST_KEY')
KAKAO_REDIRECT_URI = getattr(settings, 'KAKAO_REDIRECT_URI')
# 인가코드 가져오기
code = request.GET.get("code")
# token 받아오기
data = {'grant_type': "authorization_code", 'client_id': REST_API_KEY,
'redirect_uri': KAKAO_REDIRECT_URI,
'code': code}
headers = {'Content-type': 'application/x-www-form-urlencoded;charset=utf-8'}
token_response = requests.post('https://kauth.kakao.com/oauth/token', data = data, headers = headers)
access_token = token_response.json().get('access_token')
# token 검증하기
headers = {"Authorization": f'Bearer {access_token}'}
token_validate_response = requests.get('https://kapi.kakao.com/v1/user/access_token_info', headers = headers)
print(token_validate_response.json())
# 사용자 정보 받아오기
headers = {"Authorization": f'Bearer {access_token}', 'Content-type': 'application/x-www-form-urlencoded;charset=utf-8'}
user_info_response = requests.post('https://kapi.kakao.com/v2/user/me', headers = headers)
print(user_info_response.json())
return render(request, 'main.html')
def kakao_logout(request):
REST_API_KEY = getattr(settings, 'KAKAO_REST_KEY')
LOGOUT_REDIRECT_URI = getattr(settings, 'KAKAO_REDIRECT_URI')
# 로그아웃
headers = {"Authorization": f'Bearer {access_token}'}
logout_response = requests.post('https://kapi.kakao.com/v1/user/logout', headers=headers)
print(logout_response.json())
# 카카오계정과 함께 로그아웃
logout_response = requests.get(f'https://kauth.kakao.com/oauth/logout?client_id=${REST_API_KEY}&logout_redirect_uri=${LOGOUT_REDIRECT_URI}')
자세한 내용은 카카오 api 에 아주 친절하게 설명이 나와있다.
삽질하면서 작성했던게 아까워서 블로그로 작성해두기.. 🥲