Coding Diary

[Next] SNS๋ณ„๋กœ ๋™์ ๋ผ์šฐํŒ…(Dynamic Routes) ์ง€์ •ํ•˜๊ธฐ

Dong _ hwa 2024. 3. 5. 19:15

๊ฐ™์€ ํ™”๋ฉด๊ตฌ์„ฑ์— ๊ฐ™์€ API์“ธ ์˜ˆ์ •์ด์–ด์„œ

ํŽ˜์ด์ง€๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์–ด์„œ ๋ชจ๋“  SNS ๋กœ๊ทธ์ธ์„ Oauth.tsxํŒŒ์ผ๋กœ ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ sns๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ์„œ๋ฒ„๋‹จ์œผ๋กœ ๋ณด๋‚ด์ค˜์•ผ๋˜๋Š”๋ฐ, 

์ด๋•Œ ๋ผ์šฐํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ด์•„์„œ ๋ณด๋‚ด์คŒ

๊ทผ๋ฐ Redirect URI๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋‹ˆ ์กฐ๊ธˆ ๋‹ฌ๋ผ์„œ ๊ฒธ์‚ฌ๊ฒธ์‚ฌ ๊ธฐ๋กํ•ด๋†“๋Š”๋‹ค

 

 

[] ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— oauth.ts ํŒŒ์ผ์„ ๋งŒ๋“ฆ (next13์ดํ›„ ๋ถ€ํ„ฐ๋Š” oauthํด๋”์— page.tsxํŒŒ์ผ๋กœ)

oauth.tsํŒŒ์ผ์€ ์ปดํฌ๋„ŒํŠธ ํŽ˜์ด์ง€๋กœ ๋ฐ”๋กœ ์ด๋™๋œ๋‹ค.

 

๊ธฐ์กด์˜ NEXT_PUBLIC_OAUTH_REDIRECT๋Š” http://localhost:3000/login/oauth์ธ๋ฐ,

๋’ค์—oauth๋ฅผ ๋นผ์ฃผ๊ณ  redirect URI๋ฅผ ์žฌ์„ค์ •ํ•ด์คฌ๋‹ค

 

WebLogin.tsx
const loginWithKakao = (snsType: string | null) => {
    Kakao.Auth.authorize({
        redirectUri: `${process.env.NEXT_PUBLIC_OAUTH_REDIRECT}/${snsType}/oauth`,
        scope: "profile_nickname",
    });
};

...

	<button onClick={() => loginWithKakao("kakao")} type="button"> ....

 

(๋‹น์—ฐํžˆ kakao developers์—๋„ ์ฃผ์†Œ๋ฅผ ๋ฐ”๊พธ์–ด์ฃผ์–ด์•ผํ•˜๊ณ , ์„œ๋ฒ„๋‹จ์—๋„ ๋งํ•ด์ค˜์•ผํ•จ)

 

์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๊ณ  ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณด์•˜๋”๋‹ˆ ์•„์ฃผ ์ž˜ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค!

 

Oauth.tsx
const snsIdentifierCodes = {
    kakao: "~~501",
    naver: "~~502",
    google: "~~503",
};

 

์ฝ”๋“œ๋ฅผ ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•ด์ฃผ๊ณ , (ํƒ€์ž…์ƒ๋žต)

 

const { code: authCode, sns: snsType } = router.query;

 

router.query.๋ฅผ ์ด์šฉํ•ด์„œ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ž˜์„œ snsCode: snsIdentifierCodes[snsType] ์ด๋Ÿฐ์‹์œผ๋กœ ์“ฐ๋ฉด ๋จ!