시작전!! 카카오 login api는 인가코드를 받은 후, 토큰을 발급받을 수 있습니다.(카카오 디벨로퍼에서 로그인 로직 확인하기)
에러 발생상황은 인가코드를 받은 후 axios를 이용해 토큰을 받기위한 post요청 중 401이 발생했다.
구글 콘솔 네트워크 탭에서 에러코드와 상태를 확인해보니 KOE010(invalid_client)이었고 리서치를 시작했다.
카카오 디벨로퍼 공식 페이지에서 확인해보면 클라이언트 시크릿 기능을 활성화한 앱에서 값을 전달하지 않는 경우 발생한다고 적혀있는것을 볼 수 있다. [내 애플리케이션] > [카카오 로그인] > [보안]에서 생성한 클라이언트 시크릿 코드를 client_secret 파라미터로 전달할 수 있다고 나와있지만 놀랍게도 나는 클라이언트 시크릿을 활성화하지 않은 상태였다.🤔
kakao access token KOE010이라는 키워드로 검색을 했고 내가 해결한 방법은 QueryString으로 body를 전달하지 않아서 발생하는 에러였다. QueryString을 적용하지 않았는데 클라이언트 시크릿 코드를 보내라는 공식문서에 당황!! 그래도 다른 분들의 질문으로 도움을 받아 해결할 수 있었다.
검색을 하면서 찾은 해결 방법들을 아래에 링크 걸어두었습니다.
Content-Type
Token 요청 시 Content-Type값 : application/x-www-form-urlencoded
활성화된 클라이언트 시크릿 적용(활성화해둔 경우)
[내 애플리케이션] > [카카오 로그인] > [보안]에서 생성한 클라이언트 시크릿 코드 확인
body QueryString 형식으로 전달
JSON.stringfy()가 아닌 QueryString으로 전달을 해야한다