LinkedIn SNS ์ฐ๋
๐ Overview
๋งํฌ๋์ธ API๋ OAuth2๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ์ธ๊ฐ์ API ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งํฌ๋์ธ ํ์ ์ ๋ณด์ ์ ๊ทผํ๊ฑฐ๋ ๋งํฌ๋์ธ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ ์ ์ธ์ฆ๊ณผ ์ธ๊ฐ๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
์น์ธ ํ์
์น์ธ ํ์ ์ ๋งํฌ๋์ธ ๋ฆฌ์์ค์ ์ ๊ทผํ ๋ ํ์ํ ์ธ๊ฐ์ ๋ํด ์น๋ ์ฌ๋ถ๋ฅผ ์๋ ค์ฃผ๋ ์ฝ๋์ด๋ค. ๋งํฌ๋์ธ์ ํ์ ์ ๋ณด๊ฐ ์ค์ฉ๋์ง ์๋๋ก ์ ๋ณด๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ์น์ธ ํ์ ์ ์ฌ์ฉํ๋ค. ๊ทธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์น์ธ ํ์ ์ ์์ฑํด์ผ ํ๋ค.
๋ก๊ทธ์ธ ์ฐ๋ ๊ณผ์
์ ์ ์กฐ๊ฑด
๏ฟฎ ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ
๋งํฌ๋์ธ ๊ฐ๋ฐ์ ํฌํธ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ค.
๏ฟฎ ์น์ธ ํ์ ์ถ๊ฐ
Products ํญ์์ "Sign in with LinkedIn"์ ์ถ๊ฐํ๊ณ Auth ํญ์ ์๋ Oauth 2.0 scopes์ ์น์ธ ํ์ ์ด ๋ก๋๋๋์ง ํ์ธํ๋ค. (๋ฐ๋ก ์ ์ฉ์ด ์ ๋ ๊ฒฝ์ฐ์ 30์ด-1๋ถ ํ์ ์๋ก๊ณ ์นจ์ ํด์ ํ์ธํ๋ค.)
์ฐ๋ ๊ณผ์
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. ์๋ต
- https://esther-liao.medium.com/how-to-get-a-linkedin-access-token-a53f9b62f0ce
- https://docs.microsoft.com/ko-kr/linkedin/consumer/integrations/self-serve/sign-in-with-linkedin
- https://docs.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow?context=linkedin%2Fcontext&tabs=HTTPS