이 글을 클릭해주셔서 감사합니다. 하도 답변없어서 제목 쎄게 달았습니다
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) // 여기서 오류발생
})
원인이 뭔지 알 수 있을까요? ㅠ