[node.js] kakao 로그인 unlink API 요청시 401 에러..!

Hyes_y·2022년 4월 30일
0

Elice_2차_프로젝트

목록 보기
4/5

소셜 로그인 유저가 탈퇴할 경우
우리 프로젝트와 유저의 kakao로 이어진 연결을 끊어주기 위해 unlink(by Admin Key)를 사용하였고 역시나 마주한 오류.

연결 끊기는 앱과 사용자 카카오계정의 연결을 끊는 기능입니다.

# URL
POST /v1/user/unlink HTTP/1.1
Host: kapi.kakao.com
Authorization: KakaoAK ${APP_ADMIN_KEY}

# Header
Authorization: KakaoAK ${APP_ADMIN_KEY}

# Parameter
target_id_type:	String	#회원번호 종류, user_id로 고정
target_id:	Long	#연결을 끊을 사용자의 회원번호

# Response 
id:	Long	# 연결 끊기에 성공한 사용자의 회원번호

출처: Kakao Developers (https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#unlink)

연결 끊기는 두 가지 방식이 존재하며

  1. 연결시 발급한 access token
  2. kakao에서 주는 앱 admin key

프로젝트의 탈퇴 로직상 access_token 사용은 번거로워서 admin key를 이용하는 방식으로 진행을 했다.

근데 401에러 두둥-

😵 무엇이 문제였을까?

axios.post에 알뜰살뜰히 정보를 넣어 보냈건만 401에러라니,,
아무래도 데이터가 안넘어가는듯 해서 parameter를 객체로도 바꿔보고, json으로도 바꿔보고 갖은 삽질을 해보다가 결국 검색을 해보았고
kakao 데브톡에도 관련 오류에 대한 글이 있어 찬찬히 살펴보던 중 실마리를 발견했다!

parameter의 형식을 바꿔보세요~!


👏 axios.post의 params를 URLSearchParams 객체로 설정하면 된다!

axios !
지난 이슈에서도 정리를 했었지만
axios.post 의 두번째 인자인 params 에는 객체 혹은 URLSearchParams 객체가 들어갈 수 있다.

까맣게 잊어버리고 처음에 또 json으로 삽질한 나 자신,,,정신채려,,

객체로도 보냈던 것 같은데 계속 401오류가 났지만 URLSearchParams 객체에 담아서 보내니 바로 성공이 되었다.

URLSearchParams 객체에 추가를 하면 url에 querystring의 형태로 추가가 되는 것 같은데 axios도 그렇지 않나? 이 부분은 좀더 찾아봐야 할 것 같다.

결론!

axios.post로 요청을 보낼 때 데이터 타입을 신경쓰자!
formData, URLSearchParams, 객체 이렇게 세 가지를 고려하면 될 것 같다.
객체를 제외한 두가지 타입은 잘 넘어오는걸 확인했으니
프로젝트 끝나고 나서 한번 params에 객체를 넣어 test를 해봐야겠다.

생각해보니
formData 를 객체에 넣어서({ formData }) 보낼 때도 multipart 오류가 났었다. 😂

앞으론 까먹지 않고 제대로 넣을게 axios.. 미안
kakao도 미안,, ㅋㅋ

출처:
axios 러닝 가이드 - https://yamoo9.github.io/axios/guide/form-format.html#%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80
Axios 공식 문서 - https://axios-http.com/kr/docs/req_config
kakao Login API Docs (unlink) - https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#unlink
URLSearchParams 설명 - https://developer.mozilla.org/ko/docs/Web/API/URLSearchParams

늘 감사합니다,, 글을 써주시는 모든 분들 😍

profile
나도 하고 싶다, 개발.

0개의 댓글