[2021.03.19] 인턴 +18 카카오 로그인(node.js) 정리
-> 해당 게시글의 API에 대한 모든 것을 node.js로 변환해서 정리 하였다.
--------------------------------------------------------------------------------------
파일명 : index.js
var express = require('express');
var router = express.Router();
var request = require('request');
// 홈페이지 메인 화면
router.get('/', function(req, res, next) {
res.render('index', { title: '안녕하세용. node.js 처음 사용하기 2021.03.19' });
});
// #1 Kakao_document 카카오 로그인 API -> ID & PW 입력해야, URL에 code 값 나옴.
// ★★★ 아이디 비번을 입력 하여, 주소창에 뜨는 코드 값을 추출 후 해당 변수에 저장하여, #3번에 적용하는게 목적 ★★★
var options1 = {
'method': 'GET',
'url': 'https://kauth.kakao.com/oauth/authorize?client_id=86e7beeb04e76962d231219fdbab3d62&redirect_uri=http://127.0.0.1:5500/shopping.html&response_type=code&state=state&prompt=login',
'headers': {
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/1', (req,res,next) => {
request(options1, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
});
-> 카카오 id , pw 입력 후 url 주소가 바뀌게 되면서 code 값이 나오는데,
location.search.split('=')[1].split("&")[0] 를 쓰면 code 추출 가능하다.
// #2 Kakao_document ID & PW 입력없이, URL에 code 값 나옴.
// ★ 주소창에 뜨는 코드 값을 추출 후, 코드 임시 저장소에 값을 저장하여, #3번에 적용하는게 목적 -> 1,2 중 하나만 되어도 됨 ★
var options2 = {
'method': 'GET',
'url': 'https://kauth.kakao.com/oauth/authorize?client_id=86e7beeb04e76962d231219fdbab3d62&redirect_uri=http://127.0.0.1:5500/shopping.html&response_type=code&scope=account_email&state=state',
'headers': {
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/kakaologin_code', (req,res,next) => {
request(options2, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
// 여기서 해당 URL 값 부분 중 code 부분을 추출해서, 웹에 뿌려지는 형태로 하기.
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
});
// #3 Kakao_document 1,2 에서 code값을 가져와서 ACCESS_TOKEN 발급
// 1,2에서 따로 저장한 code 값을 url에 넣어 적용시키기. (ACCESS_TOKEN 일회성)
var options3 = {
'method': 'POST',
'url': 'https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id=86e7beeb04e76962d231219fdbab3d62&redirect_uri=http://127.0.0.1:5500/shopping.html&code=qkcEWgTDgIvVRIl4d1xDWr0Jju5ganNAemdr5ZA_oa7v-gr_CaXxv2hwzKTcaktZndt-ZgopcNEAAAF4SOoQXg',
'headers': {
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/token', (req,res,next) => {
request(options3, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
// #4 Kakao_document 로그아웃기능, #3에서 발급 받은 ACCESS_TOKEN 값을 헤더에 넣어야함
// 즉, 3번에서 발급 받은 토큰 값을 임시 변수에 저장 후, URL > Authorization -> Bearer 뒤에 토큰 값 저장 변수 넣어야함.
var options4 = {
'method': 'POST',
'url': 'https://kapi.kakao.com/v1/user/logout',
'headers': {
'Authorization': 'Bearer D4KfJvKzIVbneqOKsJhNUzjE4M8aUieGo1WlBgopb1UAAAF4SPNkhw',
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/id', (req,res,next) => {
request(options4, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
// #5 Kakao_document 회원번호를 입력하여, 강제 로그아웃 기능
// #4에서 얻은 결과 값인 id(회원번호)를 임시 저장 변수에 저장 후, id(회원번호) 값이 들은 변수를 url에 집어 넣어야함.
var options5 = {
'method': 'POST',
'url': 'https://kapi.kakao.com/v1/user/logout?target_id=1663080653&target_id_type=user_id',
'headers': {
'Authorization': 'KakaoAK f44214a0aa820ede17041560a42fed97',
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/id', (req,res,next) => {
request(options5, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
// #6 Kakao_document #1에서 로그인 한 카카오채널을, 로그아웃 시키는 기능(버튼이 각각 존재 -> 이 서비스만 로그아웃, 카카오페이지와 함께 로그아웃)
// 각 버튼 클릭시 해당 로그아웃 page를 연동시켜줘야함.
var options6 = {
'method': 'GET',
'url': 'https://kauth.kakao.com/oauth/logout?client_id=86e7beeb04e76962d231219fdbab3d62&logout_redirect_uri=http://127.0.0.1:5500/kakaologout.html&state=state',
'headers': {
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/logout_button', (req,res,next) => {
request(options6, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
// #7 Kakao_document admin key로 연결 끊는 기능
// #4 에서 회원번호를 Access_token 값으로 확인받아, id(회원번호)를 따옴.
// 그런 후에, 회원 변호를 다른 임시변수에 저장하여, url 주소 값에 집어 넣어줘야함.
var options7 = {
'method': 'POST',
'url': 'https://kapi.kakao.com/v1/user/unlink?target_id_type=user_id&target_id=1663080653',
'headers': {
'Authorization': 'KakaoAK f44214a0aa820ede17041560a42fed97',
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/ak_logout', (req,res,next) => {
request(options7, function (error, response) {
res.json((response.body)) // res.jsotoekn은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
// #8 Kakao_document Access_token 재갱신
// #3 에서 발급 받은 refresh_token 값을 넣어, 계속 ACCESS_token 갱신.
// 해당 #3에서 발급 받은 refresh_token 값을 임시로 저장하여, 값을 넣어줘야 작동함.
// client_id는 카카오톡 채널 앱 KEY이므로 고정(FIX)
var options8 = {
'method': 'POST',
'url': 'https://kauth.kakao.com/oauth/token?grant_type=refresh_token&client_id=86e7beeb04e76962d231219fdbab3d62&refresh_token=-yRK-oCuXKsgO7WmISm5aSZdVeWkgfLJ4Ges7gorDR4AAAF4SRYv4g',
'headers': {
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/refresh_token', (req,res,next) => {
request(options8, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
// #9 Kakao_document profile 정보(access_token 값 적용)
// #3 에서 발급 받은 access_token 값을 변수에 넣어, Authorization 뒤에 Bearer 임시저장한 access_token 값을 넣어야함
var options9 = {
'method': 'GET',
'url': 'https://kapi.kakao.com/v2/user/me',
'headers': {
'Authorization': 'Bearer NZC4NmrnenuLxcsuyvC-YL5ZKOhdFC1f6RptgworDKcAAAF4SRnI5A',
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/profile', (req,res,next) => {
request(options9, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
// #10 Kakao_document profile 정보를 입력해서 id(회원번호) 알아내기
// 9에서 얻은 profile 정보 중 properties에 값을 key : value 형태로 넣어, id(회원번호) 아이디를 알아냄
var options10 = {
'method': 'POST',
'url': 'https://kapi.kakao.com/v1/user/update_profile?properties={"nickname": "김인제"}&properties={"profile_image" : "http://k.kakaocdn.net/dn/K9G8c/btq0a9vWUGA/GAMZs7digkhTeXK1ZVq3a1/img_640x640.jpg"}',
'headers': {
'Authorization': 'Bearer BvjCnXjQNcts-rM7hN5_VauwGlqTLmsL3x0RZAopyWAAAAF4SSmcOQ',
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/profile_id', (req,res,next) => {
request(options10, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
// # 11 Kakao_document 카카오톡 채널에 가입한 사람 (회원번호 출력, 총 회원 수, 이전,이후url 출력)
// limit -> 한번에 출력할 수, order -> 내림차순, 오름차순 정렬
// admin key는 fix 되어있으므로 해당 변수에 저장하면 됨.
var options11 = {
'method': 'GET',
'url': 'https://kapi.kakao.com/v1/user/ids?limit=10&order=desc',
'headers': {
'Authorization': 'KakaoAK f44214a0aa820ede17041560a42fed97',
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/chanel_all', (req,res,next) => {
request(options11, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
// # 12 Kakao_document 카카오톡 채널 등록 시키기
// access_token 값을 임시 저장 변수에 저장하여, Bearer 뒤에 저장 변수 넣음
var options12 = {
'method': 'POST',
'url': 'https://kapi.kakao.com/v1/user/signup',
'headers': {
'Authorization': 'Bearer Aef5KiE2WvoqsqEDiBbYCaohztSKjuYGzC1s6wopyV8AAAF4SS9AVw',
'Cookie': '_kadu=obbX5ocxPb_URlIr_1615857666611'
}
};
router.get('/chanel_all', (req,res,next) => {
request(options12, function (error, response) {
res.json((response.body)) // res.json은 웹에서 출력 값을 출력
if (error) throw new Error(error);
//console.log(response.body); //vs code 터미널 상에서 출력 값을 출력
// 추가
});
})
module.exports = router;
'Web > Kakao developers' 카테고리의 다른 글
[2021.04.07~13] 인턴 +37 카카오 챗봇 개념 정리 (5) | 2021.04.07 |
---|---|
[2021.03.17] 인턴 +16 카카오 로그인(REST API) - 정리 완료 (3) | 2021.03.17 |
[2021.03.17] 인턴 +16 카카오로그인(설정하기) - 정리 완료 (0) | 2021.03.17 |
[2021.03.17] 인턴 +16 카카오로그인(이해하기) - 정리 완료 (0) | 2021.03.17 |
[2021.03.05] 인턴 +4 카카오 로그인 API 기능 사용 & 챗봇 머신러닝 (0) | 2021.03.11 |
댓글