
๐ฉ๐ปโ๐ป ์ด ๊ฒ์๊ธ์ ์ค์ ๋ฐฉ๋ฒ๋ง์ ์ค๋ช ํฉ๋๋ค. supabase์ OAuth์ ๋์์ ๋ํด์๋ ํด๋น ๊ฒ์๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์!
OAuth(์คํ ์ธ์ฆ)๋ ์ฌ์ฉ์๊ฐ ์ 3์ ์ ํ๋ฆฌ์ผ์ด์ (supabase ๊ธฐ๋ฐ ์ฑ)์์ ์ธ์ฆํ ์ ์๊ฒ ํด์ฃผ๋ ํ์ค ํ๋กํ ์ฝ์ ๋๋ค. Kakao OAuth๋ ์ฌ์ฉ์๊ฐ ๋ณ๋์ ํ์๊ฐ์ ์์ด๋ Kakao ๊ณ์ ์ ์ฌ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก๊ทธ์ธํ ์ ์๋๋ก ํฉ๋๋ค.
Kakao OAuth ์ค์ ์ ์ํด์๋ Kakao Developer ์ฌ์ดํธ์์ ์นด์นด์ค ๋ก๊ทธ์ธ ํ์ฑํ ์ค์ , Redirect URI ๋ฑ๋ก, ํ๋ซํผ ๋ฑ๋ก, ๋์ํญ๋ชฉ์ ๋ฐ๋์ ์ค์ ํด์ผ ํฉ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ, OpenID Connect ํ์ฑํ์ ๊ฐํธ๊ฐ์ ์ค์ ์ ์ค์ ํ ์ ์์ต๋๋ค.
๐ ์ฑ ์์ฑ โข ๊ตฌ์ฑ
์ฑ์ ์์ฑโข๊ตฌ์ฑํจ์ผ๋ก์จ Kakao๊ฐ OAuth ์ธ์ฆ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ํ์ํ ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ณผ์ ์ ๋๋ค. ๋ฑ๋ก์ ํตํด ์ธ์ฆ ์์ฒญ์ ์ฌ์ฉ๋๋ ๊ณ ์ client ID๋ฅผ ๋ฐ์ต๋๋ค.
Kakao Developer ์ฌ์ดํธ์์ ๋ก๊ทธ์ธ์ ํ๊ณ My Application(๋ด ์ ํ๋ฆฌ์ผ์ด์
)์ผ๋ก ์ด๋ํฉ๋๋ค.
์ฝ์์์Add an application(์ ํ๋ฆฌ์ผ์ด์
์ถ๊ฐํ๊ธฐ)๋ฒํผ์ ๋๋ฌ ์ฑ ์ ๋ณด๋ฅผ ์
๋ ฅํ๊ณ Save(์ ์ฅ)ํด ์ฑ์ ์์ฑํฉ๋๋ค.

์นด์นด์ค๋น์ฆ๋์ค ํตํฉ ์๋น์ค ์ฝ๊ด ๋์๋ฅผ ํตํด ์ฌ์
์ ๋ฒํธ ์์ด ๊ฐ๋ฐ์ ํ ์ ์์ต๋๋ค. 

if...
- ๋๋ฉ์ธ ์ฃผ์ ํน์ Android / IOS ํจํค์ง๋ช ์ด ์๋ค๋ฉด ์ฑ ์ค์ > ํ๋ซํผ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ํ๋ ํ๋ซํผ์ ๋ฑ๋กํฉ๋๋ค.
- ์น ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ Kakao OAuth๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ค์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๐ REST API KEY
- ์ฑ์ ์์ฑํ๋ฉด ์ฌ๋ฌ ์ข ๋ฅ์ ์ฑ ํค๊ฐ ์์ฑ๋๋ ๋ฐ, ๊ทธ ์ค REST API ํค๋ Supabase์ Kakao API๊ฐ ํต์ ์์ ์ฌ์ฉํ๋ ์ธ์ฆ ์๋จ์ ๋๋ค.
- REST API ํค๋ก supabase๋ Kakao๋ก๋ถํฐ ์ธ์ฆ์ฝ๋๋ฅผ ๋ฐ์ ์ก์ธ์ค ํ ํฐ์ ์์ฒญํ ์ ์์ต๋๋ค. ํด๋น ํค๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ผ๋ฉด ํธ์ถ์ด ์คํจํฉ๋๋ค.


๐ Redirect URI
- ์ฌ์ฉ์๊ฐ Kakao ๊ณ์ฒญ์ ํตํด ๋ก๊ทธ์ธํ๊ณ ๊ถํ์ ์น์ธํ ํ, ์๋ฒ๋ ์ด URI๋ก ๋ก๊ทธ์ธ ๊ณผ์ ์์ ์์ฒญํ ์ธ์ฆ ๊ฒฐ๊ณผ(์ธ์ฆ ์ฝ๋)์ ํ ํฐ์ ๋ณด๋ ๋๋ค. Supabase๋ ์ด ์ธ์ฆ ์ฝ๋๋ฅผ ์ฌ์ฉํด ์ก์ธ์ค ํ ํฐ์ ์์ฒญํฉ๋๋ค.
- Kakao๊ฐ ์ธ์ฆ ํ์ ์ด๋ค ์ ํ๋ฆฌ์ผ์ด์ ํ์ด์ง๋ก ๋์๊ฐ ์ง๋ฅผ ๊ฒฐ์ ํ๋ฏ๋ก 'Kakao Developer ์ฝ์'๊ณผ 'Supabase ์ค์ '์์ ์ฃผ์๊ฐ ์ผ์นํด์ผ ํฉ๋๋ค.
- ์ฌ๋ฐ๋ฅด๊ฒ ๋ฑ๋กํ์ง ์์ ๊ฒฝ์ฐ
KOE006์๋ฌ(์ธ์ฆ ์ค๋ฅ ์๋ฌ)๊ฐ ๋ฐ์ํฉ๋๋ค.- ๋ก๊ทธ์ธ ํ ๋๋ฉํ์ด์ง, ์ถ๊ฐ ์ ๋ณด ์ ๋ ฅ ํ์ด์ง ๋ฑ ์ํฉ์ ๋ง๋ ํ์ด์ง๋ก ์ด๋ํ๋๋ก ์ต๋ 10๊ฐ๊น์ง ๋ฑ๋กํ ์ ์์ต๋๋ค.
- ๋ก๊ทธ์ธ ๊ณผ์ ์ค ํน์ ์ ๋ณด๋ฅผ ์ ์งํ๊ฑฐ๋ ์ ๋ฌํ๋ ค๋ฉด state ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ฉํฉ๋๋ค.
REST API key๋ฅผ ์ค์ ํ Supabase ํ์ด์ง์์ Callback URL์ ๋ณต์ฌํฉ๋๋ค.
Product settings > Kakao Login > Redirect URI ์ ๋ณต์ฌํด๋ Callback URL๋ฅผ ๋ถ์ฌ๋ฃ์ด ์ค๋๋ค.

๐ Client-Secret
- OAuth ์ธ์ฆ ๊ณผ์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ณํ๊ณ , ์์ฒญ์ด ์ ๋ขฐํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์จ ๊ฒ์์ ์ฆ๋ช ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- supabase๊ฐ Kakao๋ก๋ถํฐ ์ธ์ฆ ์ฝ๋๋ฅผ ๋ฐ์ ์ก์ธ์ค ํ ํฐ์ ์์ฒญํ ๋, ๋ฏธ๋ฆฌ ๋ฐ๊ธ๋ฐ์ Client-secret์ ํ๋ผ๋ฏธํฐ์ ํฌํจ์์ผ ํจ๊ป ์ ์กํ ๊ฒฝ์ฐ์๋ง ์ฑ๊ณต ์๋ตํ๋๋ก ์ค์ ํด ์ธ์ฆ์ ์ ๋ขฐ์ฑ์ ๋์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ฑ์ ๊ฐํํ๋ ๋ณด์ ๊ธฐ๋ฅ์ ๋๋ค.
Product settings > Kakao Login ์์ ์ค์์น๋ฅผ ํด๋ฆญํด์ ํ์ฑํํด์ค๋๋ค.

Security(๋ณด์)์ผ๋ก ์ด๋ํด generate code(์ฝ๋ ์์ฑ)์ ํด๋ฆญํด Client Secret๋ฅผ ์์ฑํฉ๋๋ค.

Activation state(ํ์ฑํ ์ํ)์์ ํ์ฑํํฉ๋๋ค. ๋ฐ๊ธ๋ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ ์ฝ๋๋ ํ์ฑํ ์ํ๋ฅผ ์ฌ์ฉํจ์ผ๋ก ๋ณ๊ฒฝํด์ผ ์ ์ฉ๋ฉ๋๋ค.

์์ฑํ Client Secret ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ supabase project dashboard > Authentication > Providers ์์ Kakao์ Client Secret Code์ ์
๋ ฅํ๊ณ saveํฉ๋๋ค.

์ฝ๋๋ฅผ ๊ฐฑ์ ํ๊ฑฐ๋ ์ ์ถ์ด ์์ฌ๋๋ ์ํฉ์์ ์ฌ๋ฐ๊ธ์ผ๋ก ์ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ ์ฝ๋๋ฅผ ๋ฐ๊ธ๋ฐ์ ์ ์์ต๋๋ค. ์ฌ๋ฐ๊ธ ๋ฐ์ผ๋ฉด ์ด์ ์ค์ธ ์๋น์ค๋ผ๋ฉด, ๊ธฐ์กด ์ฝ๋๋ฅผ ์ฌ์ฉํ ํ ํฐ ๋ฐ๊ธ ์์ฒญ์ด ๋ชจ๋ ์คํจํ๊ฒ ๋๋ฏ๋ก ์ด์ ์ค์ธ ๊ฒฝ์ฐ์๋ ์ฃผ์ํด์ผ ํฉ๋๋ค.
๐ ์ฌ์ฉ์ ๋์ ํญ๋ชฉ
- ์ฌ์ฉ์๊ฐ ์ธ์ฆ๋๊ณ , ์ฌ์ฉ์ ์ ๋ณด ์ค ์ด๋ค ์ ๋ณด์ ์ ๊ทผํ ์ ์๋์ง ์ ์ํ๊ณ , ์ค์ ๋ ๋์ ํญ๋ชฉ์ ๋ฐ๋ผ ๋ก๊ทธ์ธ ์์ Kakao๊ฐ ์ ๊ทผ ๊ถํ์ ์์ฒญํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋์ํ ํญ๋ชฉ์ ํํด์๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ด ํด๋น ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋์ํ์ง ์์ผ๋ฉด Supabase๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ๋๋ก ์์ ํ ์ ์์ต๋๋ค.
Kakao Login > Consent Items(๋์ ํญ๋ชฉ)์์ ๋ฒ์๋ฅผ ์ค์ ํฉ๋๋ค. ๊ฐ ํญ๋ชฉ๋ณ '์ค์ '์ผ๋ก ์ฌ์ฉ ์ฌ๋ถ์ ๋์ ๋จ๊ณ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
'account_eamil(์นด์นด์ค๊ณ์ )', 'profile_image(ํ๋กํ ์ฌ์ง)', 'profile_nickname(๋๋ค์)'์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ํ์ฌ์ผ ์ค๋ฅ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.

๊ฐํธ๊ฐ์ ์ ์ฌ์ฉํ๋ฉด Kakao Login์ ํตํด ํ์๊ฐ์ ๊น์ง ์๋ฃํ ์ ์์ต๋๋ค.

OepnID Connect(OIDC)
์ฌ์ฉ์์ ๋ก๊ทธ์ธ์ ๋ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ํ์ค ์ธ์ฆ ํ๋กํ ์ฝ์ ๋๋ค.
ํ์ฑํํ๋ฉด ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๊ฐ ๋ด๊ธด IDํ ํฐ์ ์ก์ธ์ค ํ ํฐ๊ณผ ํจ๊ป ๋ฐ๊ธ๋ฐ๊ณ , ํ์ค ๊ท๊ฒฉ์ ์ค์ํ ํํ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ๊ณต๋ฐ์ ์ ์์ต๋๋ค.
