TIL

23/12/08 TIL __ Passport kakao ์นด์นด์˜ค ์ „๋žต ๋ฝ€๊ฐœ๊ธฐ

GABOJOK 2023. 12. 9. 00:09

 

 

๐Ÿซ    ์ƒํ™ฉ

passport local ์ „๋žต์— ์ด์€  kakao๋ฅผ ์‹œ๋„ํ•ด ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

์ง€๋‚œ๋ฒˆ ํŒ€๊ณผ์ œ์—์„œ ๋กœ๊ทธ์ธ๊ธฐ๋Šฅ ์„ฑ๊ณตํ›„, ์ด์™ธ์— ํ† ํฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋งŽ์ด ๋ฏธ์ˆ™ํ–ˆ๊ณ ,

ํƒˆํ‡ด๊ธฐ๋Šฅ, ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ๊ธฐ๋Šฅ ๋“ฑ๋“ฑ์ด ์ฒ˜๋ฆฌ๊ฐ€ ์•ˆ๋˜์—ˆ๋‹ค.

๋˜ํ•œ ๋ฐฐํฌ๋ถ€๋ถ„์—์„œ ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ์–ด์„œ ์ •๋ง ์•„์‰ฌ์› ๋Š”๋ฐ

์ด๋ฒˆ์— ๋‹ค์‹œ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. 

 

 

 

๐Ÿž๏ธ  ๊ณผ์ •

passport kakao ์ „๋žต์„ ์‚ฌ์šฉํ•ด์„œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฒˆ์—๋Š” ํƒˆํ‡ด๊ธฐ๋Šฅ๊ณผ, ํ† ํฐ ๋ถ€๋ถ„์„ ์œ„์ฃผ๋กœ ๋‹ค๋ค„๋ณด๊ฒ ๋‹ค.

 

 

๋กœ๊ทธ์ธ ์—ฐ๊ฒฐํ•˜๋Š”๊ฑด ์นด์นด์˜ค ๋””๋ฒจ๋กœํผ์— ๋“ค์–ด๊ฐ€์„œ ์•ฑ ๋งŒ๋“ค๊ณ , ์„ค์ •์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.  

๋””๋ฒจ๋กœํผ ์‚ฌ์ดํŠธ์— ์ž‘์„ฑํ•ด๋‘” ๊ฒฝ๋กœ๋กœ ์ฝ”๋“œ์—์„œ ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋˜๋ฉด, ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํ™”๋ฉด์ด ๋œจ๊ฒŒ ๋˜๋Š”๋ฐ,

์—ฌ๊ธฐ์„œ ์ฃผ์˜์ ์€ callback url์„ localhost๋ถ€ํ„ฐ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. 

๋‚˜์˜ ๊ฒฝ์šฐ env ์— ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์„ ํ•ด์„œ ์‚ฌ์šฉํ–ˆ๋‹ค. 

 

passport.use(
	new KakaoStrategy(
		{
			clientID: process.env.KAKAO_ID,
			callbackURL: process.env.KAKAO_CALLBACK_URL
		},
		async (accessToken, refreshToken, profile, done) => {
			try {
				const email = profile._json.kakao_account.email;

 

clientID ์—๋Š” restAPI ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค. javascript๋ฅผ ๋„ฃ์–ด๋„ ๋œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ accessToken 2์‹œ๊ฐ„์œผ๋กœ ์งง๋‹ค๋Š” ์‚ฌ์‹ค์€ ์•Œ์•„๋‘์ž. 

 

 

์—ฐ๊ฒฐ ๋Š๊ธฐ์˜ ๊ฒฝ์šฐ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ์—ฐ๊ฒฐ ๋Š๊ธฐ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ๋‹ค. 

์—ญ์‹œ ๊ณต์‹๋ฌธ์„œ ์ต์˜ค..

์นด์นด์˜ค ๊ณต์‹๋ฌธ์„œ๋Š” ๊ทธ๊ฐ„ ๋ด์™”๋˜ ์™ธ๊ตญ ๊ณต์‹๋ฌธ์„œ์™€ ๋‹ฌ๋ฆฌ ํ•œ๊ธ€๋กœ ๋˜์–ด์žˆ์–ด ์ผ๋‹จ ํŽธ์•ˆํ–ˆ๋‹ค.. ์ด์ƒํ•œ ๋ฒˆ์—ญ๋„ ์—†์—ˆ๊ณ ,

๋ฌด์—ˆ๋ณด๋‹ค ์นด์นด์˜ค ์งˆ๋ฌธ๊ฒŒ์‹œํŒ์— ์‘๋‹ต์ด ์นœ์ ˆํ•˜๊ฒŒ ๋˜์–ด์žˆ์–ด์„œ ๋„ˆ๋ฌด ๊ณต๋ถ€ํ•˜๊ธฐ ์ข‹์•˜๋‹ค. 

 

 

 

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#unlink

 

Kakao Developers

์นด์นด์˜ค API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•ด๋ณด์„ธ์š”. ์นด์นด์˜ค ๋กœ๊ทธ์ธ, ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ, ์นœ๊ตฌ API, ์ธ๊ณต์ง€๋Šฅ API ๋“ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

developers.kakao.com

 

์—ฐ๊ฒฐ ๋Š๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

๋ฉ”์„œ๋“œURL์ธ์ฆ ๋ฐฉ์‹

POST https://kapi.kakao.com/v1/user/unlink ์•ก์„ธ์Šค ํ† ํฐ
์„œ๋น„์Šค ์•ฑ ์–ด๋“œ๋ฏผ ํ‚ค

 

 

์—ฐ๊ฒฐ ๋Š๊ธฐ๋Š” ์•ฑ๊ณผ ์‚ฌ์šฉ์ž ์นด์นด์˜ค๊ณ„์ •์˜ ์—ฐ๊ฒฐ์„ ๋Š๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ ์—ฐ๊ฒฐ๊ณผ ์—ฐ๊ฒฐ ๋Š๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

REST API ์‚ฌ์šฉ ์‹œ ์—ฐ๊ฒฐ ๋Š๊ธฐ๋Š” ์‚ฌ์šฉ์ž์˜ ์•ก์„ธ์Šค ํ† ํฐ ๋˜๋Š” ์•ฑ ์–ด๋“œ๋ฏผ ํ‚ค(Admin key)๋กœ API๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์ข…๋ฃŒ ๋“ฑ ์ƒํ™ฉ์— ๋”ฐ๋ผ ํ† ํฐ์œผ๋กœ ์—ฐ๊ฒฐ ๋Š๊ธฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ ์–ด๋“œ๋ฏผ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ ์š”์ฒญ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์•ฑ ์–ด๋“œ๋ฏผ ํ‚ค๋Š” ์ ˆ๋Œ€๋กœ ์œ ์ถœ๋˜์–ด์„  ์•ˆ ๋˜๋Š” ์ค‘์š”ํ•œ ํ‚ค์ž…๋‹ˆ๋‹ค. ์ •๋ณด ๋ณด์•ˆ์„ ์œ„ํ•ด ์–ด๋“œ๋ฏผ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ REST API ์š”์ฒญ์€ ๊ผญ ์„œ๋ฒ„์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๊ณ , ์†Œ์Šค ์ฝ”๋“œ์—๋Š” ์–ด๋“œ๋ฏผ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ์œ ์˜ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋“œ๋ฏผ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์—ฐ๊ฒฐ ๋Š๊ธฐ๋ฅผ ํ•  ๊ฒฝ์šฐ, ๋Œ€์ƒ ์‚ฌ์šฉ์ž๋ฅผ ๋ช…์‹œํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ๋Š๊ธฐ ์š”์ฒญ์— ์„ฑ๊ณตํ•˜๋ฉด ํ•ด๋‹น ์‚ฌ์šฉ์ž ํšŒ์›๋ฒˆํ˜ธ๋ฅผ ์‘๋‹ต์œผ๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋กœ๊ทธ์•„์›ƒ์ด ํ•จ๊ป˜ ์ง„ํ–‰๋˜์–ด ์•ก์„ธ์Šค ํ† ํฐ๊ณผ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์ด ๋งŒ๋ฃŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์ œ

์š”์ฒญ: ์•ก์„ธ์Šค ํ† ํฐ ๋ฐฉ์‹

curl -v -X POST "https://kapi.kakao.com/v1/user/unlink" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}"

์š”์ฒญ: ์„œ๋น„์Šค ์•ฑ ์–ด๋“œ๋ฏผ ํ‚ค ๋ฐฉ์‹

curl -v -X POST "https://kapi.kakao.com/v1/user/unlink" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \
  -d "target_id_type=user_id" \
  -d "target_id=123456789" 

์‘๋‹ต

{
  "id": 123456789
}

 

 

๊ณต์‹๋ฌธ์„œ์— ๋‚˜์™€์žˆ๋Š”๋Œ€๋กœ axios๋ฅผ ์ด์šฉํ•ด ๋”ฐ๋ผํ•ด ๋ดค๋”๋‹ˆ ๋ฐ”๋กœ ์ž‘๋™์ด ๋˜์—ˆ๋‹ค.

ํšŒ์› ํƒˆํ‡ดํ•˜๋‹ˆ ๋‹ค์‹œ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํ• ๋•Œ ๋™์˜ ํ™”๋ฉด์ด ๋œจ๊ธฐ ์‹œ์ž‘!!!!!!

 

๊ณต์‹๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ํ•ด๋‹น ํ”Œ๋กœ์šฐ์— ๋Œ€ํ•ด ์ด๋ ‡๊ฒŒ ๋งํ•œ๋‹ค. 

 

๋จผ์ € ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์› ํƒˆํ‡ด ์š”์ฒญ์„ ํ•˜๋ฉด
์„œ๋ฒ„์—์„œ ์นด์นด์˜ค๋กœ ์—ฐ๊ฒฐ๋Š๊ธฐ ์š”์ฒญ ํ›„
์„ฑ๊ณต์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํšŒ์›์ •๋ณด ์‚ญ์ œ
ํ† ํฐ ์‚ญ์ œ
ํšŒ์›์—๊ฒŒ ํƒˆํ‡ด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค๊ณ  ๋งํ•˜๊ธฐ.

 

 

 

ํ•ด๋‹น ํ”Œ๋กœ์šฐ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉด ์‰ฝ๊ฒŒ ํƒˆํ‡ด ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

ํ† ํฐ์˜ ๊ฒฝ์šฐ ์นด์นด์˜ค์—์„œ ์ œ๊ณตํ•˜๋Š” ์—‘์„ธ์Šค ํ† ํฐ, ๋ฆฌํ”„๋ ˆ์‰ฌ ํ† ํฐ ๋ชจ๋‘ ์‚ฌ์šฉํ–ˆ๊ณ , 

์„ธ์…˜ ์ €์žฅ๋ฐฉ์‹์„ ๋ฐฐ์ œํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—(์‚ฌ์‹ค ๋ชฐ๋ผ์„œ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ–ˆ๊ณ , ๋‚˜์ค‘์— ๋ฐ”๊ฟ”์•ผ์ง€ ์ƒ๊ฐํ–ˆ๋‹ค.)

๋ฆฌํ”„๋ ˆ์‰ฌํ† ํฐ์€ db์— ์ €์žฅํ•˜๊ณ , ์—‘์„ธ์Šค ํ† ํฐ์€ ์„ธ์…˜์— ์ €์žฅ๋œ๊ฑธ ์ฟ ํ‚ค์—๋„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. 

์ผ๋‹จ์€ db์— ์ €์žฅํ–ˆ์ง€๋งŒ, ๋ ˆ๋””์Šค ๋ผ๋Š” ํ† ํฐ ์ €์žฅ์†Œ๋กœ ์ž์ฃผ ์“ฐ์ด๋Š” ์• ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด๊ณ  ์‹ถ์–ด ์‹œ๋„ํ•ด ๋ณผ ์˜ˆ์ •์ด๋‹ค. 

 

 

๐Ÿซ   ๋Š๋‚€์ 

 

ํ† ํฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด์„œ ํ† ํฐ์˜ ์ฒ˜๋ฆฌ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋งŽ์€ ๋ถ€์กฑํ•จ์„ ๋Š๊ผ‡๊ณ ,

์ฝ”๋”ฉ์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๋ชฉ์ ์˜ ๋ช…ํ™•์„ฑ์„ ์ž๊พธ๋งŒ ์žƒ์–ด๋ฒ„๋ ค ๊ธธ์„ ์žƒ๊ณ  ๋‹ค๋ฅธ๊ฒƒ์— ๋น ์ ธ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. 

๋งŽ์€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๋”๋ผ๊ณ , ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ”๋ฅผ ๋ถ„๋ช…ํžˆ ์ •ํ•˜๊ณ , 

ํ”๋“ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฐจ๊ทผ์ฐจ๊ทผ ๋‚˜๊ฐ€๋Š” ์Šต๊ด€์„ ์ฝ”๋”ฉ์—์„œ๋„, ์•ž์œผ๋กœ์˜ ๊ณต๋ถ€์—์„œ๋„ ๋“ค์ด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.