소개
내 자격 증명은 얼마나 오래 유효하나요?
기본적으로 PKCE를 사용하는 Authorization Code Flow로 발급한 액세스 토큰은offline.access 스코프를 사용하지 않은 경우 두 시간만 유효합니다.
리프레시 토큰
offline.access가 적용되면 OAuth 2.0 리프레시 토큰이 발급됩니다. 이 리프레시 토큰으로 액세스 토큰을 발급받을 수 있습니다. 이 스코프가 전달되지 않으면 리프레시 토큰은 발급되지 않습니다.
리프레시 토큰을 사용해 새 액세스 토큰을 받기 위한 요청 예시는 다음과 같습니다:
앱 설정
기밀 클라이언트
스코프
| Scope | 설명 |
| tweet.read | 보호된 계정을 포함해 사용자가 볼 수 있는 모든 트윗. |
| tweet.write | 사용자를 대신해 트윗 작성 및 리트윗. |
| tweet.moderate.write | 사용자의 트윗에 달린 답글 숨기기 및 숨김 해제. |
| users.email | 인증된 사용자의 이메일. |
| users.read | 보호된 계정을 포함해 사용자가 볼 수 있는 모든 계정. |
| follows.read | 사용자를 팔로우하는 사람과 사용자가 팔로우하는 사람. |
| follows.write | 사용자를 대신해 팔로우 및 언팔로우. |
| offline.access | 액세스를 해지할 때까지 계정 연결 상태 유지. |
| space.read | 사용자가 볼 수 있는 모든 스페이스. |
| mute.read | 사용자가 뮤트한 계정. |
| mute.write | 사용자를 대신해 계정 뮤트 및 뮤트 해제. |
| like.read | 사용자가 좋아요한 트윗 및 사용자가 볼 수 있는 좋아요. |
| like.write | 사용자를 대신해 트윗에 좋아요 및 좋아요 취소. |
| list.read | 비공개 목록을 포함해 사용자가 만든 또는 구성원으로 있는 목록, 목록 멤버, 목록 팔로워. |
| list.write | 사용자를 대신해 목록 생성 및 관리. |
| block.read | 사용자가 차단한 계정. |
| block.write | 사용자를 대신해 계정 차단 및 차단 해제. |
| bookmark.read | 인증된 사용자의 북마크한 트윗 가져오기. |
| bookmark.write | 트윗에 북마크 추가 및 제거. |
| media.write | 미디어 업로드. |
요청 한도
그랜트 타입
OAuth 2.0 플로우
용어집
| 용어 | 설명 |
| 그랜트 타입 | OAuth 프레임워크는 다양한 사용 사례를 위한 여러 그랜트 타입과 새로운 그랜트 타입을 만들기 위한 프레임워크를 정의합니다. 예로 authorization code, client credentials, device code, refresh token이 있습니다. |
| 기밀 클라이언트 | 등록된 client secret을 안전하게 보관하는 등 권한 부여 서버에 안전하게 인증할 수 있는 애플리케이션을 말합니다. |
| 퍼블릭 클라이언트 | 브라우저나 모바일 기기에서 실행되는 애플리케이션처럼 등록된 client secret을 사용할 수 없는 클라이언트를 말합니다. |
| Authorization code 플로우 | 기밀 및 퍼블릭 클라이언트가 authorization code를 액세스 토큰으로 교환할 때 사용됩니다. |
| PKCE | 여러 공격을 방지하고 퍼블릭 클라이언트에서도 OAuth 교환을 안전하게 수행할 수 있도록 authorization code 플로우를 확장한 것입니다. |
| Client ID | 개발자 포털의 키와 토큰 섹션에서 “Client ID” 헤더 아래에서 확인할 수 있습니다. 보이지 않는 경우 저희 팀에 직접 문의해 주세요. Client ID는 authorize URL을 생성하는 데 필요합니다. |
| Redirect URI | 콜백 URL입니다. 정확 일치 검증이 필요합니다. |
| Authorization code | 애플리케이션이 사용자를 대신해 API를 호출할 수 있도록 합니다. auth_code로 알려져 있습니다. App 소유자가 사용자로부터 승인된 auth_code를 받으면 해당 코드의 유효 시간은 30초입니다. 30초 이내에 액세스 토큰으로 교환해야 하며, 그렇지 않으면 auth_code가 만료됩니다. |
| 액세스 토큰 | 애플리케이션이 사용자를 대신해 API 요청을 수행하는 데 사용하는 토큰입니다. |
| 리프레시 토큰 | 리프레시 토큰 플로우를 통해 사용자 프롬프트 없이 새 액세스 토큰을 발급받을 수 있도록 합니다. |
| Client Secret | 기밀 클라이언트 유형의 App을 선택했다면 App의 키와 토큰 섹션에서 “Client ID” 아래에 “Client Secret”이 제공됩니다. |
매개변수
| Parameter | Description |
| response_type | 이 값이 코드임을 “code”로 지정해야 합니다. |
| client_id | 개발자 포털의 “Client ID” 항목에서 확인할 수 있습니다. |
| redirect_uri | 앱의 콜백 URL입니다. 이 값은 앱 설정에 정의된 Callback URLs 중 하나와 정확히 일치해야 합니다. OAuth 2.0의 경우 콜백 URL에 대해 정확 일치 검증이 필요합니다. |
| state | CSRF 공격을 방지하기 위한 검증용 임의 문자열입니다. 길이는 최대 500자입니다. |
| code_challenge | PKCE 매개변수로, 요청마다 생성하는 임의의 시크릿입니다. |
| code_challenge_method | 요청에 사용할 방법을 지정합니다(S256 또는 plain). |