๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS/๐Ÿ”ฅ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

OAuth - Kakao vs Apple

by MINT09 2025. 8. 13.

 

๋ˆ„๊ฐ€ ๊ฐ€์ž…/ํƒˆํ‡ด ์ ˆ์ฐจ์˜ ์ฑ…์ž„์„ ์ง€๋Š”๊ฐ€

์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ iOS๋Š” ์นด์นด์˜ค, ์• ํ”Œ ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ๊ฐ€์ ธ๊ฐ€๊ณ  ์žˆ๋Š”๋ฐ ์ด ๋‘˜์˜ ์ฐจ์ด์ ์— ์˜ํ•ด ๋ฐฑ์—”๋“œ์™€ ๊ธธ๊ฒŒ ๋…ผ์˜ํ•˜๋Š” ์‹œ๊ฐ„์ด ์žˆ์—ˆ๋‹ค. ์นด์นด์˜ค๋Š” ์•ฑ์—์„œ ์นด์นด์˜ค ์ธ์ฆ ์„œ๋ฒ„์—๊ฒŒ ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›๋Š”๋ฐ ์• ํ”Œ์€ ๊ทธ๋ ‡์ง€ ์•Š์•„ ์ƒ๊ธฐ๋Š” ๋…ผ์Ÿ์ด์—ˆ๋‹ค.

์„œ๋ฒ„ ์ฃผ๋„์˜ Apple

์• ํ”Œ ๋กœ๊ทธ์ธ์˜ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์•ฑ์—์„œ Apple ๋กœ๊ทธ์ธ ์š”์ฒญ → ์‚ฌ์šฉ์ž ๋™์˜
  2. Apple์ด AuthorizationCode ์ „๋‹ฌ
  3. ์•ฑ์ด AuthorizationCode๋ฅผ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ
  4. ์„œ๋ฒ„๊ฐ€ Apple API์— Authorization Code๋ฅผ ์ œ์ถœํ•ด AccessToken & RefreshToken ๋ฐœ๊ธ‰
  5. ์„œ๋ฒ„์—์„œ ๊ฐ€์ž… / ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ๋ฐ ํ† ํฐ ๊ด€๋ฆฌ
  6. ํƒˆํ‡ดํ• ๋•Œ๋„ ์„œ๋ฒ„์—์„œ RefreshToken์„ ํ™œ์šฉํ•ด Apple API ํ˜ธ์ถœ

์ด๋•Œ AccessToken์„ ๋ฐœ๊ธ‰๋ฐ›๊ฑฐ๋‚˜, ํƒˆํ‡ด ์ฒ˜๋ฆฌ๋ฅผ ํ•  ๋•Œ ์„œ๋ฒ„์—์„œ๋งŒ ๊ด€๋ฆฌํ•˜๋Š” -๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ณด์•ˆ ์ด์Šˆ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š”- client_secret์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ฑ…์ž„์˜ ์ฃผ์ฒด๋Š” ์„œ๋ฒ„๋กœ ํ† ํฐ ๋ฐœ๊ธ‰, ๊ฐฑ์‹ , ๋งŒ๋ฃŒ ๊ด€๋ฆฌ, ๊ฐ€์ž… ์—ฌ๋ถ€ ํŒ๋‹จ ๋ชจ๋‘ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋ณด์•ˆ์„ฑ์ด ๋†’๊ณ  ํ† ํฐ ๊ด€๋ฆฌ๋ฅผ ์„œ๋ฒ„์—์„œ ์˜จ์ „ํžˆ ์ฑ…์ž„์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

์•ฑ ์ฃผ๋„์˜ Kakao

์นด์นด์˜ค์˜ ๊ฒฝ์šฐ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ์นด์นด์˜คํ†ก ์•ฑ์—์„œ ๋กœ๊ทธ์ธ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด SDK๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ฑ์ด ์นด์นด์˜ค ์ธ์ฆ ์„œ๋ฒ„์—์„œ AccessToken์„ ๋ฐœ๊ธ‰ ๋ฐ›๊ฒŒ ๋œ๋‹ค. ์ฆ‰ ๊ฐ€์ž…/๋กœ๊ทธ์ธ ํ•  ๋•Œ์˜ ์ฑ…์ž„์ด ์˜จ์ „ํžˆ ํ•œ์ชฝ์— ์žˆ์ง€ ์•Š๊ณ  ๋‚˜๋‰˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

  1. ์•ฑ์—์„œ Kakao SDK ํ˜ธ์ถœ → ๋กœ๊ทธ์ธ ํ™”๋ฉด ํ‘œ์‹œ (์•ฑ์œผ๋กœ)
  2. ์นด์นด์˜ค ์ธ์ฆ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž ๋™์˜ → AccessToken ๋ฐœ๊ธ‰
  3. ์•ฑ์ด AccessToken์„ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ
  4. ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ํ† ํฐ์„ ์‚ฌ์šฉํ•ด ์นด์นด์˜ค API๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ž… ์ฒ˜๋ฆฌ

ํ† ํฐ ๋ฐœ๊ธ‰ / ๊ฐฑ์‹  / ๋งŒ๋ฃŒ ๊ฐ์ง€๋Š” ์•ฑ์˜ ์ฑ…์ž„์ด์ง€๋งŒ, ์„œ๋ฒ„ ์œ ํšจ์„ฑ ๊ฒ€์ฆ / ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ / ๊ฐ€์ž… / ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ / ์„œ๋น„์Šค ๋‚ด ๊ถŒํ•œ ๊ด€๋ฆฌ๋Š” ์„œ๋ฒ„์˜ ์ฑ…์ž„์œผ๋กœ ๋‚˜๋‰˜๊ฒŒ ๋œ๋‹ค.

์„œ๋ฒ„ ์ฃผ๋„์˜ Kakao?

๋•Œ๋ฌธ์— ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋ถ„์ด ๋‘ ๊ฒฝ์šฐ ๋™์ผํ•˜๊ฒŒ ์ฑ…์ž„์ด ํ•œ์ชฝ์— ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์˜๊ฒฌ์„ ์ œ์‹œํ•˜์…จ๋‹ค. ์ด์— ๋™์˜ํ•˜๊ณ  ์นด์นด์˜ค์—์„œ Authorization Code๋งŒ ๋ฐœ๊ธ‰๋ฐ›์œผ๋ ค ํ–ˆ์œผ๋‚˜ ์ด ๊ฒฝ์šฐ “์นด์นด์˜คํ†ก ์•ฑ์œผ๋กœ ๋กœ๊ทธ์ธ”์€ ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ์ฝ”๋“œ → ์„œ๋ฒ„ ๊ตํ™˜ ๋‹จ๊ณ„๊ฐ€ SDK ๋ฐ–์œผ๋กœ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž ๋™์˜ ํ›„ ๊ณง๋ฐ”๋กœ OAuthToken์„ ์•ฑ์— ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•ฑ ์„œ๋น„์Šค์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Authorization Code๋ฅผ ์ „๋‹ฌ๋กœ ์ธํ•ด ์นด์นด์˜ค ๋กœ๊ทธ์ธ์„ ํ•˜๋ ค๋ฉด ์›น์ด ์—ด๋ ค์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ณธ์ธ์˜ ์นด์นด์˜ค ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ณ์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋˜์—ˆ๋‹ค.

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