본문 바로가기
Web/Kakao developers

[2021.03.19] 인턴 +18 카카오 로그인(node.js) 정리

by injekim97 2021. 3. 19.
반응형

[2021.03.19] 인턴 +18  카카오 로그인(node.js) 정리 

 

 

 

injekim97.tistory.com/137

 

[2021.03.17] 인턴 +16 카카오 로그인(REST API) - 정리 완료

[2021.03.17] 인턴 +16  카카오 로그인(REST API) - 정리 완료 developers.kakao.com/docs/latest/ko/kakaologin/rest-api Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요...

injekim97.tistory.com

-> 해당 게시글의 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;
반응형

댓글