๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+135] Final Project : 15์ผ์ฐจ(1) ์นด์นด์˜ค ์†Œ์…œ ๋กœ๊ทธ์ธ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 3. 3.

 

 

D+135

-  Final Project : 15์ผ์ฐจ -

( ํฌ์ŠคํŠธ๋งจ์œผ๋กœ ์นด์นด์˜ค API ํ…Œ์ŠคํŠธ )

 


 

 

์˜ค๋Š˜์€ ์†Œ์…œ๋กœ๊ทธ์ธ์— ๋Œ€ํ•ด ๊ตฌํ˜„์„ ์ง„ํ–‰ํ•ด ๋ณด์•˜์œผ๋ฉฐ,

์นด์นด์˜ค์— ๋“ฑ๋กํ•œ ๋‚ด ์ •๋ณด๊ฐ€ ํฌ์ŠคํŠธ๋งจ์„ ํ†ตํ•ด์„œ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๊ณ  ์‹ ๊ธฐํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋Š๊ผˆ๋‹ค.

 

์ค‘๊ฐ„์— ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ œ๋Œ€๋กœ ํ™•์ธํ•ด๋ณด์ง€ ์•Š์•„์„œ ์•ฝ๊ฐ„ ์‚ฝ์งˆ์„ ํ•˜๊ธฐ๋Š” ํ–ˆ์ง€๋งŒ

๊ทธ๋ž˜๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฒŒ ๋˜์–ด์„œ ๋„ˆ๋ฌด๋‚˜ ๋‹คํ–‰์ด์—ˆ๋‹ค.

 

์šฐ์„ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์ „์— 'kakao devleopers'์— ๋‚ด ์•ฑ์„ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค.

 

Kakao Developers

์นด์นด์˜ค API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•ด๋ณด์„ธ์š”. ์นด์นด์˜ค ๋กœ๊ทธ์ธ, ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ, ์นœ๊ตฌ API, ์ธ๊ณต์ง€๋Šฅ API ๋“ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

developers.kakao.com

 

๊ทธ๋Ÿฌ๋ฉด ์•ฑ์— ๋Œ€ํ•œ ํ‚ค๋“ค์ด ์žˆ๋Š”๋ฐ ์ •๋ณด๊ฐ€ ํƒ€์ธ์— ์˜ํ•ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

 

 

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— [์•ฑ์„ค์ •] - [ํ”Œ๋žซํผ] ์—์„œ ๋„๋ฉ”์ธ์ด ์ œ๋Œ€๋กœ ์„ค์ •์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ 

๋ฐ‘์— Redirect URI๋„ ์ œ๋Œ€๋กœ ์„ค์ • ๋˜์—ˆ๋Š”์ง€ ์ž˜ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

 

 

๋ณธ๊ฒฉ ํฌ์ŠคํŠธ๋งจ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์ „์— ์นด์นด์˜ค๋กœ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š”์ง€์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด

๋จผ์ € ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” client_id(REST APIํ‚ค)๋ฅผ ํ†ตํ•ด์„œ ์นด์นด์˜ค๋กœ๋ถ€ํ„ฐ ์ธ๊ฐ€์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์˜ค๊ณ 

์ด ์ธ๊ฐ€์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ด ์•ก์„ธ์Šคํ† ํฐ๊ณผ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๋ฐ›์•„์™€ ํšŒ์›์˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋ฉด ๋œ๋‹ค.

 

๋ง๋กœํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์นด์นด์˜ค์—์„œ ๋‚ด ์ •๋ณด๋ฅผ ๋ฝ‘์•„์˜ค์ž.

 

 

STEP 01 > ์ธ๊ฐ€์ฝ”๋“œ ๋ฐ›์•„์˜ค๊ธฐ

์ธ๊ฐ€์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” Rest API์— ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์–‘์‹์— ๋งž์ถฐ์„œ url์„ ์ž‘์„ฑํ•ด์ค€ ๋‹ค์Œ์—

์ฃผ์†Œ์ฐฝ์— ๊ฒ€์ƒ‰์„ ์‹œ๋„ํ•ด ๋ณธ๋‹ค.

 

์นด์นด์˜ค API์—์„œ ์š”๊ตฌํ•˜๋Š” ์–‘์‹์— ๋งž์ถฐ์„œ url์„ ์ฃผ์†Œ์ฐฝ์— ๋„ฃ์–ด์ฃผ๋ฉด ์นด์นด์˜ค ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•˜๋ผ๋Š” ์ฐฝ์ด ๋œจ๊ฒŒ ๋˜๋Š”๋ฐ

์ผ๋‹จ ์ž…๋ ฅ๋ž€์— ๊ฐ’์„ ๋„ฃ์—‡ ๋กœ๊ทธ์ธ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ํ™”๋ฉด์ฐฝ์—์„œ๋Š” ํŠน๋ณ„ํ•œ ๋ณ€ํ™”๋Š” ์—†์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ์ฃผ์†Œ์ฐฝ์„ ํ™•์ธํ•ด๋ณด๋ฉด

code๋ผ๊ณ  ์ ํžŒ ์ดํ›„์— ๋ฌธ์ž์—ด์ด ๋‚˜์™€์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ธ๊ฐ€์ฝ”๋“œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ธ๋ฐ 'code='์ดํ›„์˜ ๊ฐ’๋“ค์„ ๋ณต์‚ฌํ•ด์ค€ ๋‹ค์Œ์—

ํฌ์ŠคํŠธ๋งจ์„ ์ด์šฉํ•ด ํ† ํฐ์„ ๋ถ€์—ฌ๋ฐ›๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋ ค ํ•œ๋‹ค.

 

STEP 02 > ํ† ํฐ ๋ฐ›์•„์˜ค๊ธฐ

ํ† ํฐ์„ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ ๋ถ€ํ„ฐ๋Š” ํฌ์ŠคํŠธ๋งจ์„ ํ™œ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ ์•„๊นŒ ์šฐ๋ฆฌ๊ฐ€ ๋ณต์‚ฌํ•œ ์ธ๊ฐ€์ฝ”๋“œ๋ฅผ code ๊ฐ’์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  client_secret์€ ํ™˜๊ฒฝ์„ค์ •์— ๋“ค์–ด๊ฐ€์„œ ON์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ์—”

๊ฐ’์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ œ๋Œ€๋กœ ํ™•์ธํ•ด๋ณด๊ณ  ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 

์ด๋•Œ ์ œ์ผ ์ค‘์š”ํ•œ๊ฑด Content-type์ธ๋ฐ jsonํ˜•์‹์ด ์•„๋‹ˆ๋ผ application/ x-www-form-urlencoded ์ด๋ฏ€๋กœ

์ œ๋Œ€๋กœ ํ˜•์‹์— ๋งž์ถฐ์„œ ์ž‘์„ฑํ•ด์ค˜์•ผํ•˜๋ฉฐ, Headers์—๋„ ์ž…๋ ฅํ•ด์ค˜์•ผ ํ† ํฐ์ด ์ œ๋Œ€๋กœ ๋ฐ›์•„์ ธ ์˜จ๋‹ค.

 

ํฌ์ŠคํŠธ๋งจ์œผ๋กœ ์ž‘์„ฑํ•ด ์ค€ ๋ชจ์Šต์œผ๋กœ Headers์—์„œ๋„ Content-Type์„ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ ์žŠ์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

 

์š”์ฒญํ–ˆ์„์‹œ์— ์ด๋ ‡๊ฒŒ ํ† ํฐ์ด ์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด์ œ ์ด ํ† ํฐ์„ ์ด์šฉํ•ด์„œ ํšŒ์›์˜ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

STEP 03 > ํšŒ์› ์ •๋ณด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์•ก์„ธ์Šค ํ† ํฐ์„ ๊ฐ€์ ธ์™”๋‹ค๋ฉด ์‚ฌ์‹ค ๋‹ค๋ฅธ ๊ฑด ๋‹ค ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—

์ž๊ธฐ ์ž…๋ง›์— ๋งž๊ฒŒ API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ธฐ๋Š” ํ•˜๋Š”๋ฐ ์šฐ๋ฆฌ๋Š” ํšŒ์›์˜ ์ •๋ณด๋ฅผ ์•Œ์•„์•ผ ํ•ด์„œ ํšŒ์› ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์™”๋‹ค.

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด๊ฒƒ๋„ ํฌ์ŠคํŠธ๋งจ์œผ๋กœ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ

์ด๋•Œ์—๋Š” Authorization์—์„œ Bearer ํ˜•์‹์œผ๋กœ ํƒ€์ž…์„ ์ง€์ •ํ•ด ์ฃผ๊ณ  ์•ก์„ธ์Šคํ† ํฐ์„ ๋„ฃ์–ด์ค€ ๋‹ค์Œ์—

STEP 02 ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ Headers์— Content-type์œผ๋กœ ๊ฐ’์„ ๋„ฃ์–ด์„œ sendํ•˜๊ฒŒ ๋˜๋ฉด

๋กœ๊ทธ์ธํ•œ ํšŒ์›์˜ ์ •๋ณด๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

(ํ•ด๋‹น ์บก์ฒ˜๋ณธ์€ ๊ฐœ์ธ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜…)

 

ํฌ์ŠคํŠธ ๋งจ์œผ๋กœ ์—ฐ์Šต๋„ ํ•ด๋ดค๊ฒ ๋‹ค ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ฝ”๋“œ๋กœ ์ง์ ‘ ๊ตฌํ˜„์„ ํ•ด๋ณด๋„๋ก ํ•˜์ž!!

(์ฝ”๋“œ๋กœ ์ง์ ‘ ๊ตฌํ˜„ ํ•˜๋Š”๊ฑด ๋‹ค์Œ ๊ฒŒ์‹œ๊ธ€์— ...)

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€