> ## Documentation Index
> Fetch the complete documentation index at: https://x-preview-mintlify-d5730eee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 앱

> X 개발자 앱을 만들고 구성하여 API 자격 증명을 받고, OAuth 1.0a 및 OAuth 2.0 권한을 설정하고, 콜백 URL을 관리하고, 키를 회전하세요.

앱은 API 자격 증명을 담는 컨테이너입니다. 각 앱에는 고유한 키, 토큰 및 설정이 있습니다.

***

## 앱 자격 증명

앱을 만들면 다음 자격 증명을 생성할 수 있습니다:

| 자격 증명                     | 사용 사례                                              |
| :------------------------ | :------------------------------------------------- |
| **API Key & Secret**      | OAuth 1.0a로 인증합니다. 요청에 서명하거나 사용자 토큰을 생성하는 데 사용됩니다. |
| **Access Token & Secret** | 자신의 계정을 대신하여 요청을 보냅니다(OAuth 1.0a).                 |
| **Client ID & Secret**    | OAuth 2.0으로 인증합니다. authorization code flow에 사용됩니다. |
| **Bearer Token**          | 공개 데이터 엔드포인트를 위한 앱 전용 인증입니다.                       |

<Tip>
  새 프로젝트에는 **OAuth 2.0**을 선택하세요. 세분화된 스코프를 제공하며 X API v2 사용자 컨텍스트 엔드포인트에 필수입니다.
</Tip>

***

## 앱 만들기

<Steps>
  <Step title="Developer Console 열기">
    [console.x.com](https://console.x.com)으로 이동하여 로그인합니다.
  </Step>

  <Step title="Create App 클릭">
    앱의 이름, 설명 및 사용 사례를 입력합니다.
  </Step>

  <Step title="자격 증명 생성">
    생성 후 필요한 키와 토큰을 생성합니다.
  </Step>

  <Step title="안전하게 저장">
    자격 증명은 한 번만 표시되므로 즉시 저장하세요.
  </Step>
</Steps>

***

## 앱 권한 (OAuth 1.0a)

OAuth 1.0a 앱에는 세 가지 권한 수준이 있습니다:

<Tabs>
  <Tab title="읽기 전용">
    * 게시물, 사용자 및 공개 데이터 보기
    * 게시, 좋아요 또는 무엇도 수정할 수 없음
    * 다이렉트 메시지 액세스 불가
  </Tab>

  <Tab title="읽기 및 쓰기">
    * 모든 읽기 권한
    * 게시물 작성 및 삭제
    * 사용자 팔로우/언팔로우
    * 좋아요 및 리포스트
    * 다이렉트 메시지 액세스 불가
  </Tab>

  <Tab title="읽기, 쓰기 및 DM">
    * 모든 읽기 및 쓰기 권한
    * 다이렉트 메시지 송수신
  </Tab>
</Tabs>

<Note>
  권한을 변경하려면 업데이트된 스코프로 새 토큰을 받기 위해 사용자가 앱을 다시 승인해야 합니다.
</Note>

***

## OAuth 2.0 앱 유형

OAuth 2.0을 구성할 때 앱 유형을 선택하세요:

| 유형                      | 클라이언트        | 사용 사례                          |
| :---------------------- | :----------- | :----------------------------- |
| **Web App**             | Confidential | 시크릿을 안전하게 저장할 수 있는 서버 측 애플리케이션 |
| **Automated App / Bot** | Confidential | 서버에서 실행되는 봇 및 자동화 서비스          |
| **Native App**          | Public       | 시크릿을 보호할 수 없는 모바일 또는 데스크톱 앱    |
| **Single Page App**     | Public       | 브라우저 기반 JavaScript 앱           |

**Confidential 클라이언트**는 Client Secret을 받습니다. **Public 클라이언트**는 PKCE만 사용합니다.

***

## 콜백 URL

콜백 URL(redirect URI)은 OAuth 흐름에 필수입니다. 사용자가 앱을 승인하면 인증 코드와 함께 콜백 URL로 리다이렉트됩니다.

### 요구 사항

* Developer Console에서 앱의 허용 목록에 콜백 URL을 추가하세요
* URL이 정확히 일치해야 합니다(후행 슬래시 포함)
* 앱당 최대 **10개의 콜백 URL**
* 프로덕션에서는 `https://` 사용
* 로컬 개발 시 `localhost`가 아닌 `http://127.0.0.1`을 사용하세요

### 허용되지 않는 프로토콜

다음 프로토콜은 사용할 수 없습니다: `javascript`, `data`, `file`, `ftp`, `mailto`, `telnet` 및 기타 비표준 스키마.

<Accordion title="허용되지 않는 프로토콜의 전체 목록">
  `vbscript`, `javascript`, `vbs`, `data`, `mocha`, `keyword`, `livescript`, `ftp`, `file`, `gopher`, `acrobat`, `callto`, `daap`, `itpc`, `itms`, `firefoxurl`, `hcp`, `ldap`, `mailto`, `mmst`, `mmsu`, `msbd`, `rtsp`, `mso-offdap`, `snews`, `news`, `nntp`, `outlook`, `stssync`, `rlogin`, `telnet`, `tn3270`, `shell`, `sip`
</Accordion>

***

## 모범 사례

<CardGroup cols={2}>
  <Card title="별도의 앱 사용" icon="layer-group">
    개발, 스테이징, 프로덕션을 위해 서로 다른 앱을 만드세요.
  </Card>

  <Card title="자격 증명 회전" icon="arrows-rotate">
    주기적으로 그리고 손상이 의심되는 경우 키를 재생성하세요.
  </Card>

  <Card title="최소 권한" icon="shield-check">
    앱이 실제로 필요한 권한만 요청하세요.
  </Card>

  <Card title="사용량 모니터링" icon="chart-simple">
    Developer Console을 정기적으로 확인하여 API 사용량을 추적하세요.
  </Card>
</CardGroup>

***

## 자동화 계정 라벨

앱이 봇 계정을 실행하는 경우 자동화로 라벨링할 수 있습니다:

1. 봇 계정의 **Settings**로 이동
2. **Your account** → **Automation** 선택
3. 관리 계정 연결

이는 사용자의 신뢰를 구축하고 봇을 스팸과 구별합니다.

***

## 문제 해결

<Accordion title="콜백 URL이 승인되지 않음 오류">
  콜백 URL이 프로토콜 및 후행 슬래시를 포함하여 Developer Console에 등록된 것과 정확히 일치하는지 확인하세요. 쿼리 매개변수로 전달할 때는 URL을 HTTP 인코딩하세요.

  ```json theme={null}
  {
    "errors": [{
      "code": 415,
      "message": "Callback URL not approved for this client application."
    }]
  }
  ```
</Accordion>

<Accordion title="앱 정지">
  앱이 정지된 것으로 표시되면 X 플랫폼 팀의 통지를 이메일에서 확인하세요. 항의하려면 [Platform Help Form](https://help.x.com/forms/platform)을 사용하세요.
</Accordion>
