카카오 개발자분들 도와주세요 ㅠ (카카오 로그인)

이 글을 클릭해주셔서 감사합니다. 하도 답변없어서 제목 쎄게 달았습니다

ID : 990926
node.js / express / rest api

안녕하세요.
react-native에서 rest api로 로그인 기능을 구축해서 사용하려 합니다.

카카오에 있는 rest api node예제를 가져와서 시도 중에 있는데 토큰을 받아오는 과정에서 아래와 같은 오류가 발생합니니다.

{
error: ‘invalid_client’,
error_description: ‘Bad client credentials’,
error_code: ‘KOE010’
}

client_secret는 사용안함 상태이며, rest api키도 이상없음을 확인했습니다.
redirect url도 아래와 같이 등록했습니다.

http://192.168.200.17:5300/kakaologin/redirect
http://192.168.200.17:5300/kakaologin

client id 와 redirect url 은 아래와 같습니다.
KAKAO_CLIENT_ID = e954fac52a6b11bc249cbdf5f1cb9762
KAKAO_REDIRECT_URI = http://192.168.200.17:5300/kakaologin/redirect

const express = require('express');
const router = express.Router();
const config = require('../config.js')
const qs = require("qs");
const session = require('express-session');
const cors = require('cors');
const axios = require("axios");

const client_id = config.KAKAO_CLIENT_ID
const redirect_uri = config.KAKAO_REDIRECT_URI
const token_uri = 'https://kauth.kakao.com/oauth/token';
const api_host = "https://kapi.kakao.com";

router.use(session({
    secret: 'kakao session secret',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: false }
}));
let corsOptions = {
    origin: '*',
    credentials: true
}
router.use(cors(corsOptions));

async function call(method, uri, param, header){
    try {
        rtn = await axios({
            method: method,
            url: uri,
            param: param ,
            headers: header
        })
    } catch (err) {
        rtn = err.response;
    }    
    console.log('인가코드 (서버41번줄): ', rtn)
    return rtn?.data;
}

router.get('/', function (req, res) {
    res.status(302).redirect(`https://kauth.kakao.com/oauth/authorize?client_id=${client_id}&redirect_uri=${redirect_uri}&response_type=code`)
})


router.get('/redirect', async function (req, res) {
    console.log('코드 :',req.query.code)
    const param = qs.stringify({
        "grant_type": 'authorization_code',
        "client_id": client_id,
        "redirect_uri": redirect_uri,
        "code": req.query.code
    });
    const header = { 'content-type': 'application/x-www-form-urlencoded' };
    var rtn = await call('POST', token_uri, param, header);
    req.session.key = rtn?.access_token;
    console.log('토큰값 (서버56번줄): ', rtn) // 여기서 오류발생
})

원인이 뭔지 알 수 있을까요? ㅠ

안녕하세요.

axios 에서 application/x-www-form-urlencoded 포멧으로 데이터를 전송하려면 아래 방법 중 하나를 선택하셔야 합니다.

const param = {
  "grant_type": 'authorization_code',
  "client_id": client_id,
  "redirect_uri": redirect_uri,
  "code": req.query.code
}

// case 1
axios({
  url: 'https://kauth.kakao.com/oauth/token'
  method: 'POST',
  headers: { 'content-type': 'application/x-www-form-urlencoded' },
  data: qs.stringfy(param)
})

// case 2
axios.post('https://kauth.kakao.com/oauth/token', new URLSearchParams(param))

// case 3
axios.post('https://kauth.kakao.com/oauth/token', qs.stringfy(param))

param : param 을 data : param 으로 바꾸니까 되네요
감사합니다 ㅠㅠ