# 링크드인 API 발급 과정

- 링크드인 가입 & 로그인 하기.

- [https://developer.linkedin.com/](https://developer.linkedin.com/) 방문 후 Create app.

- **App Name, LinkedIn Page, App logo를 필수적으로 입력 및 등록을 해야합니다.**

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095051_UF3l8f9L7aHsAdaU3G?q=80&s=1280x180&t=outside&f=webp)

- page가 없으시다면 [https://www.linkedin.com/company/setup/new](https://www.linkedin.com/company/setup/new) 에서 새롭게 만들 수 있습니다.

    - 회사, 브랜드 페이지 등을 선택할 수 있는데 저는 회사로 만들었습니다.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095052_STDDvfoWMqCXDfg2eq?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095053_osN7QRsS7FWk31hN7Z?q=80&s=1280x180&t=outside&f=webp)

# 앱 페이지 설명

---

- My apps에서 만들어진 앱을 확인할 수 있습니다.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095054_gbtEF8wGOoEmxIm92g?q=80&s=1280x180&t=outside&f=webp)

### Setting Tab

-  연결된 페이지를 Verified를 진행해주세요.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095054_qBLAnaVEf808S7fDfh?q=80&s=1280x180&t=outside&f=webp)

## Auth Tab

- **Application credentials : **Client ID, Client Secret 키 값을 메모장에 잘 저장해둡니다.

- **OAuth 2.0 settings**

    - 별도 Token을 발급 받아야 합니다. 토큰의 유효기간은 2달 가량 주어집니다. (5184000 seconds = 8 weeks 4days)

    - **Authorized redirect URLs에는 아래 URL이 추가되어 있는지 확인.**

        - [https://datapopcorn.win/rest/oauth2-credential/callback](https://datapopcorn.win/rest/oauth2-credential/callback)

[n8n - OAuth Callback](https://datapopcorn.win/rest/oauth2-credential/callback)

        - [https://www.linkedin.com/developers/tools/oauth/redirect](https://www.linkedin.com/developers/tools/oauth/redirect)

[Developers | LinkedIn](https://www.linkedin.com/developers/tools/oauth/redirect)

- **OAuth 2.0 scopes (앱이 사용자를 대신하여 수행할 수 있는 작업을 정의합니다)**

    - **openid : 이름과 사진 사용**

    - profile : 이름과 사진 사용

    - w_member_social : 사용자를 대신하여 게시물, 댓글 및 반응 생성, 수정 및 삭제

    - email : LinkedIn 계정과 연결된 기본 이메일 주소 사용

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095055_yoxXDn1dnn8C3qFQgN?q=80&s=1280x180&t=outside&f=webp)

## Products Tab

- App type: Standalone app 입니다. 아래 두가지 Products의 Request Access를 진행하세요.

- **Share on LinkedIn (scope : openId)**

    - /v2/userinfo

- **Sign In with LinkedIn using OpenID Connect (scope : w_member_social)**

    - /v2/aseets 

    - /v2/posts

    - /v2/reactions

    - /v2/shares

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095056_RSxKeV0hyqsqNXFyme?q=80&s=1280x180&t=outside&f=webp)

## Analytics Tab

- API 사용량을 체크합니다

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095058_59IF78TtEgWfnVoNq1?q=80&s=1280x180&t=outside&f=webp)

## Team members

- 앱 관리자를 관리합니다.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095059_eZ0aEMJwh2bRCMlRXX?q=80&s=1280x180&t=outside&f=webp)

# **Create OAuth 2.0 access token**

- OAuth Token Tools에서 Access Token 발급받기.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095059_4vFSDazNdrPfY6bxji?q=80&s=1280x180&t=outside&f=webp)

- 모든 scope를 체크합니다.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095100_p7GQBU3vf9pRUqJKll?q=80&s=1280x180&t=outside&f=webp)

- **Inspect OAuth 2.0 access token 에서 앞서 생성한 토큰의 유효성을 체크할 수 있습니다.**

    - Status을 통해 현재 이 토큰은 유효한 것으로 확인됩니다.

```
curl --location --request POST 'https://www.linkedin.com/oauth/v2/introspectToken' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'token=<YOUR TOKEN>' \
    --data-urlencode 'client_id=<>' \
    --data-urlencode 'client_secret=<>'
    
curl --location --request POST 'https://www.linkedin.com/oauth/v2/introspectToken' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'token=AQUlOLvYRLpibQmgCrAApwhOSIHMJQPuMSrBvxT15t8eQuLWfAb64tllCMOoMRLT2My9O64wOHDjUS-7Q0sahveNEfEyF5_h4saXNCKaP5FJJlXInD2wva36wLLZVq2WHCb5ATkTlJtFfv-6tLAqvqUE4D-DroqgI4aPvdg-_qRISSvrPMR9vVXSLjOLVk5mVXAuL1ceCkH9b9qcy37T0pqD9RvEra8irwMzE822GucOZptggh-UsaV3eCBp3hLafF5oIOz7AYfpm4_vKFVFLN5A_H6AcHSoR2BkBPR7PWQrFvDwzrrjDh4aTmLTVvJ6pUXwEOtoTUE-BFuha0WvWr2SmdnQxA' \
    --data-urlencode 'client_id=86tlyd8qd8jmvk' \
    --data-urlencode 'client_secret=WPL_AP1.3ubGoWHmnXS3lZRg.4dcj2w=='
```

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095101_TCtja7DnuYo9ew2DWV?q=80&s=1280x180&t=outside&f=webp)

## **Advertising API 신청과정 (페이지용)**

- 이 과정을 진행해야 `회사 페이지(조직)` 계정으로 포스팅을 할 수 있습니다. 개인 계정으로만 포스팅 하실 분들은 패스.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095102_UgeZEMxId7UDAgsbKt?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095103_AOsoTcBmBPLJw0gvtY?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095104_7PoEgK8NVTUTdU9jjx?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095105_Vj2Ae8rG1TZVKSWFq9?q=80&s=1280x180&t=outside&f=webp)

신청하고 나니  아래 처럼 권한이 늘어남.

- 참고로 r은 read, w는 write 권한임.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095106_jjZIn0QBzZKDCBPhUc?q=80&s=1280x180&t=outside&f=webp)

- 다시 새롭게 OAuth 2.0 Access Token을 발급합니다.

    - 신청한 권한이 많아진 것을 확인할 수 있습니다. 모든 권한이 다 필요하진 않지만 저는 그냥 다 신청하였습니다.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095107_WmNhnfXCxuJ0gRcTHx?q=80&s=1280x180&t=outside&f=webp)

- Permissions Scope가 반영된 새로운 토큰으로 사용합니다.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095108_mp7rZojGhlA0AmnWVq?q=80&s=1280x180&t=outside&f=webp)

## 레퍼런스

- 데이터팝콘 회사 페이지 [https://www.linkedin.com/company/105004096/](https://www.linkedin.com/company/105004096/)

- 데이터팝콘 브랜드 페이지 [https://www.linkedin.com/showcase/105019977/](https://www.linkedin.com/showcase/105019977/)

- 

- 

- 3-lagged Oauth 방식.

    - 꽤나 복잡한 절차로 인증코드를 받아온다.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095109_0mzI6E0x6tBRgwCGmF?q=80&s=1280x180&t=outside&f=webp)

- Standard로해서 아래 인증 내용을 넣습니다. 

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095109_vqcPRyZ8DtUxMFqVAp?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095110_NqR2VQr5VbOXgocr75?q=80&s=1280x180&t=outside&f=webp)

- 허용을 해주고 나면 링크드인 포스팅이 가능해집니다.

    - `datapopcorn page - upload` 이런식으로 작성하고 실행하니 `urn:li:share:7260924359517614080`  결과가 나왔습니다.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095111_obhuhNaHB94wAEMlMR?q=80&s=1280x180&t=outside&f=webp)

- 실제 페이지에 가보니 아래와 같이 올바르게 잘 포스팅이 되었습니다.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095112_6ovouwCSLurT3zI0Pt?q=80&s=1280x180&t=outside&f=webp)

[https://www.linkedin.com/posts/datapopcorn_datapopcorn-page-upload-activity-7260924360033476608-fV4I/?utm_source=share&utm_medium=member_desktop](https://www.linkedin.com/posts/datapopcorn_datapopcorn-page-upload-activity-7260924360033476608-fV4I/?utm_source=share&utm_medium=member_desktop)

- URL을 통한 이미지 업로드도 확인하였습니다. [https://www.linkedin.com/posts/datapopcorn_imaeg-upload-activity-7260926006151000064-BC87?utm_source=share&utm_medium=member_desktop](https://www.linkedin.com/posts/datapopcorn_imaeg-upload-activity-7260926006151000064-BC87?utm_source=share&utm_medium=member_desktop)

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095112_4pWUr0b1DES3bfWLWX?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095113_fgCjGQKDHqxXXUh8BD?q=80&s=1280x180&t=outside&f=webp)

- 7260926737541136384

    - [https://www.linkedin.com/posts/datapopcorn_n8n-title-activity-7260926738094792704-YDra?utm_source=share&utm_medium=member_desktop](https://www.linkedin.com/posts/datapopcorn_n8n-title-activity-7260926738094792704-YDra?utm_source=share&utm_medium=member_desktop)

    - 

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095114_iE2l9FeAsAaHOE5Gmp?q=80&s=1280x180&t=outside&f=webp)

---

# 용어 정리

## URNs and IDs

- [URNs](http://www.ietf.org/rfc/rfc2141.txt) are used to represent foreign associations to an entity (persons, organizations, and so on) in an API. A URN is a string-based identifier with the format:

- `urn:{namespace}:{entityType}:{id}`

For example:

    - `urn:li:person:123` 

    - `urn:li:organization:456`

- URN와 ID의 차이.

![Image](https://upload.cafenono.com/image/slashpageHome/20250422/095114_SFGN7RyatMH8x0ykz9?q=80&s=1280x180&t=outside&f=webp)

For the site tree, see the [root Markdown](https://slashpage.com/n8n-guide.md).
