๊ธฐ๋ฅ ๋ฐ ํ๋ก์ฐ๋ ์๋์ ๊ฐ๋ค. ๊ฐ์ ํ์ด์ง์ ์ถ๊ฐ๋ก ๊ตฌํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ!
https://moon-lilac.tistory.com/183
Next.js | ์นด์นด์ค ๋ก๊ทธ์ธ ๊ตฌํํ๊ธฐ
๊ธฐ์กด์ ํ์ด์ง์ ์์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๊ณ ํ๋ค.๊ทธ๋์ ์ด๋ฏธ ์๋ ์ฌ์ฉ์์ ์๋ก ๋ก๊ทธ์ธํ ์ฌ์ฉ์์์ ๋งค์นญ๊ธฐ๋ฅ์ด ํ์ํ๋ค.๊ทธ๋ฆฌ๊ณ ํ์๊ฐ์ ์ด ํ์ํ ์ฌ์ดํธ๊ฐ ์๋๋ผ, ๊ด๋ฆฌ์๊ฐ ์ฌ์ฉ์
moon-lilac.tistory.com
1. ๊ตฌ๊ธ ํด๋ผ์ฐ๋์์ ํ๋ก์ ํธ ์์ฑ
๋ง๋ค๊ธฐ ํ API ๋ฐ ์๋น์ค์์ OAuth ๋์ ํ๋ฉด ๋๋ฌ์ฃผ๊ณ , ๋ด๋ถ๋ง๊ณ ์ธ๋ถ ์ ํํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์์ผ๋ก ๋์ด๊ฐ ํ์๊ฐ์ธ ์ฑ ์ด๋ฆ, ์ฌ์ฉ์ ์ง์ ์ด๋ฉ์ผ, ๊ฐ๋ฐ์ ์ฐ๋ฝ์ฒ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ๋ค์์ผ๋ก ๋์ด๊ฐ๋ค.
๊ณ์ ์ ์ฅํ ๊ณ์ ๋๋ฅด๋ค๊ฐ ์์ฝํ๋ฉด ๋์ค๋ฉด ๋์๋ณด๋๋ก ๋์๊ฐ๊ธฐ๋ฅผ ๋๋ฌ์ค๋ค.
(์ค๊ฐ์ ๋ฒ์ ๋ถ๋ถ์์ ์ถ๊ฐํด์ ์ป์ด์ค๊ณ ์ถ์ ์ ๋ณด ์ถ๊ฐํ ์ ์์, ๋๋ email)
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์ ์ธ์ฆ์ ๋ณด ๋ฉ๋ด๋ก ๋ค์ด๊ฐ, ์๋จ์ +์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋ง๋ค๊ธฐ๋ฅผ ๋๋ฌ์ฃผ๋ฉด
์นด์นด์ค์์๋ ํด๋ดค๋ ์์ ๋ค์ ์ญ ํ๋ฉด๋๋ค.
์น์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํํ๊ณ , ์๋ฒ ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ , Redirect URI๋ฅผ ์ ๋ ฅํด์ฃผ๋ฉด ๋จ.
์ผ๋จ์ localhost:3000 ์ผ๋ก ํด์ค๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ํด๋ผ์ด์ธํธ ID์ ๋ณด์๋น๋ฐ๋ฒํธ๋ฅผ ๋ฟ ๋์ ธ์ค!
2. ๊ตฌ๊ธ๋ก๊ทธ์ธ ์ธ์ฆํ๋ฉด์ผ๋ก ๋์ด๊ฐ๊ธฐ (์๋ฒ์ธก์ ์ธ๊ฐ์ฝ๋ ๋ณด๋ด๊ธฐ)
๋๋ redirect URI๋ฅผ ~/login/google/oauth ์ด๋ ๊ฒ ๋ง๋ค์๊ณ ,
๊ฐ์ด๋ฐ google๋ถ๋ถ์ด ๋์ ์ผ๋ก ๋ผ์ฐํ ํ๋ ๋ถ๋ถ์ด๋ค.(์ธ๊ฐ์ฝ๋ ๋ณด๋ผ ๋ ์ ๋ณดํ์ด์ง๋ฅผ ๊ณตํต์ผ๋ก ์ฐ๊ธฐ ์ํจ)
๊ทธ๋์ google์ธ์ฆํ๋ฉด์ผ๋ก ๋์ด๊ฐ๋ ๋ถ๋ถ์์ snsType ์ ํ๋ผ๋ฏธํฐ๋ก ์ง์ ํด ๋ณด๋ด์ค๋ค.
login.tsx
const loginWithGoogle = (snsType: string | null) => {
window.location.href = `https://accounts.google.com/o/oauth2/v2/auth?
client_id=${process.env.NEXT_PUBLIC_GOOGLE_AUTH_CLIENT_ID}&
redirect_uri=${process.env.NEXT_PUBLIC_OAUTH_REDIRECT}/${snsType}/oauth&
response_type=code&scope=email profile`;
};
...
<button onClick={() => loginWithGoogle("google")} type="button">
<img className="form_btn" src="./images/google_login.png" alt="" />
</button>
...
Oauth.tsx
๊ทธ๋ผ ์ด์ ์ด ํ์ด์ง๋ก ์์, ์นด์นด์ค์ ๋์ผํ ์์ ์ ์งํํ๋ค.
์ ์ค์์ code=""๋ผ๊ณ ์ฐ์ฌ์๋ ๋ถ๋ถ์์ ""๋ง ๊ณจ๋ผ์ ๋์ ธ์ฃผ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋๋จธ์ง ๋ถ๋ถ์ ๋ค ๊ฐ๊ธฐ ๋๋ฌธ์ ๊ตฌ๊ธ๋ ์ด๋ ๊ฒ ์งํํด์ฃผ๋ฉด ๋๋ค.
๊ฒ์ํด๋ณด๋ ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ๋ฐฉ๋ฒ์ด ๋๋ฌด ๋ง์์ ์ต๊ทผ์ ์ด๋ป๊ฒ ์งํํ๊ณ ์๋์ง, ์์ฐ๋ ๊ฒ์ ๋ฌด์์ธ์ง๋ ์๋ชจ๋ฅด๊ฒ ์ด์ ใ ,ใ
๋๊ธ์ ์ธ์ ๋ ํ์์ ๋๋น..

'TIL > Next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Next 14 | Chakra UI๋ฅผ next์์ ์ฌ์ฉํ๊ธฐ (0) | 2024.03.11 |
---|---|
Next.js | ๋ค์ด๋ฒ ๋ก๊ทธ์ธ ๊ตฌํํ๊ธฐ (๋ค์๋ก~) (0) | 2024.03.06 |
Next.js | ์นด์นด์ค ๋ก๊ทธ์ธ ๊ตฌํํ๊ธฐ (1) | 2024.02.27 |
[TIL] Next.js 13 ๋ผ์ฐํ (4) | 2023.05.27 |
Next.js ๊ธฐ์ด 2 - component, props, state (0) | 2023.05.20 |