๐ซ ์ํฉ
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
์ฐ๊ฒฐ ๋๊ธฐ
๊ธฐ๋ณธ ์ ๋ณด
๋ฉ์๋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์ ์ ์ฅํ์ง๋ง, ๋ ๋์ค ๋ผ๋ ํ ํฐ ์ ์ฅ์๋ก ์์ฃผ ์ฐ์ด๋ ์ ๋ฅผ ์ฌ์ฉํด ๋ณด๊ณ ์ถ์ด ์๋ํด ๋ณผ ์์ ์ด๋ค.
๐ซ ๋๋์
ํ ํฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ฉด์ ํ ํฐ์ ์ฒ๋ฆฌ๋ถ๋ถ์ ๋ํ ๋ง์ ๋ถ์กฑํจ์ ๋๊ผ๊ณ ,
์ฝ๋ฉ์ ํ๋ค๋ณด๋ ๋ชฉ์ ์ ๋ช ํ์ฑ์ ์๊พธ๋ง ์์ด๋ฒ๋ ค ๊ธธ์ ์๊ณ ๋ค๋ฅธ๊ฒ์ ๋น ์ ธ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค.
๋ง์ ์๋ฌ๋ฅผ ๋ง๋๋๋ผ๊ณ , ํ๊ณ ์ ํ๋ ๋ฐ๋ฅผ ๋ถ๋ช ํ ์ ํ๊ณ ,
ํ๋ค๋ฆฌ์ง ์๊ณ ์ฐจ๊ทผ์ฐจ๊ทผ ๋๊ฐ๋ ์ต๊ด์ ์ฝ๋ฉ์์๋, ์์ผ๋ก์ ๊ณต๋ถ์์๋ ๋ค์ด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
23/12/10 TIL __ AWS EC2 ๋ฐฐํฌ (redis, ์นด์นด์ค passport) ์๋ฌ (0) | 2023.12.11 |
---|---|
23/12/09 TIL __ Redis ์ฌ์ฉํ๊ธฐ (0) | 2023.12.10 |
23/12/07 TIL __ Passport ๋ก์ปฌ (0) | 2023.12.08 |
23/12/06 TIL __ ์ธ์ ์ ์ฅ ํ ์ถ๋ ฅ undefined (1) | 2023.12.06 |
23/12/05 TIL __ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ (1) | 2023.12.05 |