토큰 재발급 api 401 에러

카카오 친구목록 불러오기를 하기위해서

카카오 친구목록 추가 동의를 받은 후 받은 코드 값을 가지고

post 요청을 했지만 401 에러가 발생합니다 무엇이 문제인건가요??

 axios
        .post("https://kauth.kakao.com/oauth/token", {
          grant_type: "authorization_code",
          client_id: `${jsKey}`,
          redirect_uri: "http://localhost:3000/oauth",
          code: code,
        })
        .then(function (response) {
          console.log(response);
        })
        .catch(function (error) {
          console.log(error);
        });

@dea972

토큰 요청 시 사용하신 앱키가 JS-SDK키가 맞는지 확인 후 말씀해 주시기 바랍니다.
최근 에러가 발생한 요청에서는, NATIVE-SDK키 에 대한 실패 로그만 있어요.

내 애플리케이션>앱 설정>앱 키 에 있는 javascript key를 입력했습니다.
환경은 React (web) 환경입니다.

@dea972

해당 에러가 발생한 시간이, 지난 18일에 확인되었으나,
최근 요청 기록을 보면 모두 정상적으로 처리되고 있습니다.
지금도 에러가 발생하고 있는지요?

59

@lars.1
크롬으로 방금 확인한 부분 입니다.

@dea972

사용하고 계신 앱키를 제게 쪽찌로 말씀해 주세요.

@lars.1
보내드렸씁니다.

@dea972

해당 키로 전달된 에러 요청이 없습니다. 코드에서 키가 맞는지 다시 확인하신 뒤 말씀해 주세요.

@lars.1

메세지 내용 확인해주세요. 키가 맞다는 부분을 보내드렸습니다.

@dea972

전달해 주신 로그에서 노출된 code 값을 사용한 토큰발급 요청 자체가 들어오지 않았습니다.
토큰 요청을 JS-SDK를 사용하지 않고 직접 요청하신 것인가요??

직접 요청하셨다면, 토큰 발급 요청 스펙이 잘못되었을 가능성이 크다고 생각되네요.
아래 문서를 확인하시고, 토큰요청 스펙에 맞게 요청하신것이 맞는지 확인하시기 바랍니다.
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#request-token

@lars.1

저의 상단 axios 요청 부분을 보면 아시겠지만 url이 문서에 있는 곳으로 되어있습니다…

@dea972

URL 외에 Content-Type, Parameter 등 확인해 보셔야 해요.
그리고 axios 의 경우 Content-Type을 설정하지 않을경우, Default json 으로 요청하는 것 으로 알고있습니다.
토큰요청은 application/x-www-form-urlencoded 으로 요청해야 합니다.
문서를 보시고 곽인해 보시는걸 추천 드려요.

1개의 좋아요
   const form = new FormData();
      form.append("grant_type", "authorization_code");
      form.append("client_id", jsKey);
      form.append("redirect_uri", "http://localhost:3000/oauth");
      form.append("code", code);
      axios({
        method: "post",
        url: "https://kauth.kakao.com/oauth/token",
        data: form,
        headers: {
          "content-type": `application/x-www-form-urlencoded;charset=utf-8`,
        },
      })
        .then(function (response) {
          console.log(response);
        })
        .catch(function (error) {
          console.log(error);
        });

@lars.1
다음과 같이 요청 드리고 있습니다.

js SDK를 사용해서 요청할수 있는방법이 있나요???

@dea972

https://developers.kakao.com/docs/latest/ko/kakaologin/js#advanced-guide

@lars.1

다음과 같은 에러가 발생합니다.
39

변경한 코드값

window.Kakao.API.request({
        url: "/oauth/token",
        grant_type: "authorization_code",
        client_id: jsKey,
        redirect_uri: "http://localhost:3000/oauth",
        code: code,
        success: function (response) {
          console.log(response);
        },
        fail: function (error) {
          console.log(error);
        },
      });

다음과 같은 방법을 통해 문제를 해결했습니다.

    window.Kakao.Auth.login({
      scope: "friends",
      success: function (response) {
        console.log(response);
      },
      fail: function (error) {
        console.log(error);
      },
    });