Web

LinkedIn SNS ์—ฐ๋™

soro.k 2021. 12. 15. 15:57


๐Ÿš€ Overview

๋งํฌ๋“œ์ธ API๋Š” OAuth2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์ € ์ธ๊ฐ€์™€ API ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋งํฌ๋“œ์ธ ํšŒ์› ์ •๋ณด์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๋งํฌ๋“œ์ธ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— ์ธ์ฆ๊ณผ ์ธ๊ฐ€๊ฐ€ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค.

 

์Šน์ธ ํƒ€์ž…

์Šน์ธ ํƒ€์ž…์€ ๋งํฌ๋“œ์ธ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๋•Œ ํ•„์š”ํ•œ ์ธ๊ฐ€์— ๋Œ€ํ•ด ์Šน๋‚™ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ฝ”๋“œ์ด๋‹ค. ๋งํฌ๋“œ์ธ์€ ํšŒ์› ์ •๋ณด๊ฐ€ ์˜ค์šฉ๋˜์ง€ ์•Š๋„๋ก ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์Šน์ธ ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์Šน์ธ ํƒ€์ž…์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

๋กœ๊ทธ์ธ ์—ฐ๋™ ๊ณผ์ •

 

์ „์ œ ์กฐ๊ฑด

๏ฟฎ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ

๋งํฌ๋“œ์ธ ๊ฐœ๋ฐœ์ž ํฌํ„ธ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•œ๋‹ค.

๏ฟฎ ์Šน์ธ ํƒ€์ž… ์ถ”๊ฐ€

Products ํƒญ์—์„œ "Sign in with LinkedIn"์„ ์ถ”๊ฐ€ํ•˜๊ณ  Auth ํƒญ์— ์žˆ๋Š” Oauth 2.0 scopes์— ์Šน์ธ ํƒ€์ž…์ด ๋กœ๋“œ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. (๋ฐ”๋กœ ์ ์šฉ์ด ์•ˆ ๋  ๊ฒฝ์šฐ์— 30์ดˆ-1๋ถ„ ํ›„์— ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด์„œ ํ™•์ธํ•œ๋‹ค.)

Products ํƒญ
Auth ํƒญ [OAuth 2.0 scopes]

 

์—ฐ๋™ ๊ณผ์ •

Step 1: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •

 

๏ฟฎ Redirect URL ์„ค์ •

Auth ํƒญ [OAuth 2.0 settings]์—์„œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ URL์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

๏ฟฎ Client ID & Client Secret ํ™•์ธ

Auth ํƒญ์—์„œ Client ID์™€ Client Secret์„ ํ™•์ธํ•œ๋‹ค.

 

Step 2: ์ธ๊ฐ€ ์ฝ”๋“œ ์š”์ฒญ

 

1. ์š”์ฒญ

GET https://www.linkedin.com/oauth/v2/authorization
ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ์„ค๋ช… ํ•„์ˆ˜
response_type string value ๊ฐ’์€ ํ•ญ์ƒ 'code'๋กœ ์ง€์ • O
client_id string Auth ํƒญ์— ์žˆ๋Š” Client ID O
redirect_uri url ์ธ๊ฐ€๋ฅผ ๋งˆ์น˜๋ฉด ๋Œ๋ ค ๋ณด๋‚ผ URL O
state string ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑ๋œ ์˜ˆ์ธก ๋ถˆ๊ฐ€ํ•œ ์ŠคํŠธ๋ง ๊ฐ’
์˜ˆ) state=DCEeFWf45A53sdfKef424
X
scope string ์Šน์ธ ํƒ€์ž…(๋ฆฌ์ŠคํŠธ๋ผ๋ฉด ์ธ์ฝ”๋”ฉ ํ•„์š”)
์˜ˆ1) scope=r_liteprofile%20r_emailaddress%20w_member_social
์˜ˆ2) scope=r_liteprofile
O

 

์š”์ฒญ URL ์˜ˆ์ œ

https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=YOUR_CLIENT_ID&scope=r_liteprofile&state=DCEeFWf45A53sdfKef424&redirect_uri=YOUR_REDIRECT_URL

๐Ÿšจ Developer potal์— ์ž‘์„ฑํ•œ Redirect URL๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ URL์ด ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

์„ฑ๊ณต ์‹œ ๋œจ๋Š” ๋กœ๊ทธ์ธ ํ™”๋ฉด

 

2. ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ

์—ฐ๋™ ํ—ˆ์šฉ์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉ์ž ์ •๋ณด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ code์™€ state ๊ฐ’์„ ์–ป๊ฒŒ ๋œ๋‹ค.

 

๏ฟฎ  code : OAuth2 ์ธ๊ฐ€ ์ฝ”๋“œ๋กœ access token์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

๏ฟฎ  state : CSRF(Cross-Site Request Forgery, ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์š”์ฒญ ์œ„์กฐ) ๊ณต๊ฒฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ๊ฐ’

 

 

Step 3: ์•ก์„ธ์Šค ํ† ํฐ์„ ์œ„ํ•œ ์ธ๊ฐ€ ์ฝ”๋“œ ๊ตํ™˜

 

1. ์š”์ฒญ

POST https://www.linkedin.com/oauth/v2/accessToekn
ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ์„ค๋ช… ํ•„์ˆ˜
grant_type string value ๊ฐ’์€ ํ•ญ์ƒ 'authorization_code'๋กœ ์ง€์ • O
code string Step 2์—์„œ ๋ฐ›์€ ์ธ๊ฐ€ ์ฝ”๋“œ O
client_id string Step 1์—์„œ ๋ฐ›์€ Client ID ๊ฐ’ O
client_secret string Step 1์—์„œ ๋ฐ›์€ Client Secret ํ‚ค O
redirect_uri url ์ „ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉํ•œ Redirect URL O

 

์š”์ฒญ URL ์˜ˆ์ œ

grant_type=authorization_code&code=YOUR_AUTHORIZATION_CODE&redirect_uri=YOUR_REDIRECT_URL&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET

 

 

2. ์‘๋‹ต

ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ์„ค๋ช… ํ•„์ˆ˜
access_token string ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์•ก์„ธ์Šค ํ† ํฐ O
expires_in int ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„๊นŒ์ง€์˜ ์‹œ๊ฐ„(์ดˆ ๋‹จ์œ„, 60์ผ) O

 

Step 4: ์ธ์ฆ ๋ฐ›์€ ์š”์ฒญ ์ƒ์„ฑ

 

1. ์š”์ฒญ

Step 3์—์„œ ์‘๋‹ต์œผ๋กœ ์ „๋‹ฌ ๋ฐ›์€ Access Token์„ Authorization ํ—ค๋”์— ๋‹ด์•„ ์š”์ฒญ์„ ์ƒ์„ฑํ•œ๋‹ค.

GET https://api.linkedin.com/v2/me
HEADER 'Authorization: Bearer YOUR_ACCESS_TOKEN'

๐Ÿšจ 'Bearer '์€ YOUR_ACCESS_TOKEN ์•ž์— ๊ทธ๋Œ€๋กœ ์ถ”๊ฐ€ํ•ด์„œ Header์— ์„ค์ •ํ•ด ์ค€๋‹ค.

 

 

2. ์‘๋‹ต