인증

인증 방식

씨미 OpenAPI는 두 가지 인증 방식을 지원합니다.

인증 방식 사용 헤더 용도
Client ID/Secret Client-Id, Client-Secret 공개 정보 조회 (채널 정보, 라이브 목록 등)
Access Token (Bearer) Authorization: Bearer {token} 사용자 권한 API (팔로워, 채팅 전송 등)

Client ID/Secret 사용 예시

GET /api/openapi/open/v1/channels?channelIds=12345
Client-Id: {clientId}
Client-Secret: {clientSecret}

Access Token 사용 예시

GET /api/openapi/open/v1/users/me
Authorization: Bearer {accessToken}

애플리케이션 등록

API를 사용하려면 먼저 개발자 포탈에서 애플리케이션을 등록해야 합니다.

  1. 개발자 포탈(/applications)에 로그인합니다.
  2. + 새 애플리케이션 버튼을 눌러 애플리케이션을 생성합니다.
  3. 생성된 Client IDClient Secret을 안전하게 보관합니다.
  4. OAuth 인증에 사용할 Redirect URI를 설정합니다.

Client Secret은 외부에 노출되지 않도록 주의하세요. 서버 사이드 코드에서만 사용하는 것을 권장합니다.

애플리케이션 이름 규칙

항목 제한
길이 2~20자
허용 문자 한글, 영문, 숫자, 밑줄(_), 공백

OAuth 2.0 Authorization Code Flow

사용자 권한이 필요한 API를 호출하려면 OAuth 2.0 Authorization Code Flow를 통해 Access Token을 발급받아야 합니다.

전체 흐름

1. 사용자를 씨미 인증 페이지로 리디렉트
   → https://ci.me/auth/openapi/account-interlock
     ?clientId={clientId}
     &redirectUri={redirectUri}
     &state={state}

2. 사용자가 권한 승인

3. 씨미가 Redirect URI로 Authorization Code 전달
   → https://your-app.com/callback?code={authorizationCode}&state={state}

4. Authorization Code로 Access Token 발급
   POST /api/openapi/auth/v1/token
   {
     "grantType": "authorization_code",
     "clientId": "{clientId}",
     "clientSecret": "{clientSecret}",
     "code": "{authorizationCode}"
   }

5. Access Token으로 API 호출
   Authorization: Bearer {accessToken}

6. 토큰 만료 시 Refresh Token으로 갱신
   POST /api/openapi/auth/v1/token
   {
     "grantType": "refresh_token",
     "clientId": "{clientId}",
     "clientSecret": "{clientSecret}",
     "refreshToken": "{refreshToken}"
   }

토큰 유효 시간

토큰 유효 시간 비고
Authorization Code 10분 발급 후 10분 이내에 Access Token으로 교환해야 합니다
Access Token 1시간 (3,600초) 만료 시 Refresh Token으로 갱신할 수 있습니다
Refresh Token 무제한 사용하지 않거나 명시적으로 취소하기 전까지 유효합니다

토큰 발급 API

POST /api/openapi/auth/v1/token

파라미터 타입 필수 설명
grantType string O "authorization_code" 또는 "refresh_token"
clientId string O 애플리케이션 Client ID
clientSecret string O 애플리케이션 Client Secret
code string 조건부 grantType"authorization_code"일 때 필수
refreshToken string 조건부 grantType"refresh_token"일 때 필수

응답:

{
  "code": 200,
  "message": null,
  "content": {
    "accessToken": "eyJhbGciOiJ...",
    "refreshToken": "dGhpcyBpc...",
    "tokenType": "Bearer",
    "expiresIn": "3600",
    "scope": "READ:USER READ:CHANNEL"
  }
}

토큰 취소 API

POST /api/openapi/auth/v1/token/revoke

파라미터 타입 필수 설명
clientId string O 애플리케이션 Client ID
clientSecret string O 애플리케이션 Client Secret
token string O 취소할 토큰
tokenTypeHint string O "access_token" 또는 "refresh_token"

Scope 레퍼런스

Scope는 Access Token이 접근할 수 있는 API 범위를 정의합니다.

Scope 설명 관련 API
READ:USER 사용자 정보 조회 현재 사용자 정보
READ:CHANNEL 채널 정보 조회 팔로워 목록, 관리자 목록
READ:SUBSCRIPTION 구독 정보 조회 구독자 목록, 구독 이벤트
READ:LIVE_STREAM_KEY 스트림 키 조회 스트림 키 조회
READ:LIVE_STREAM_SETTINGS 라이브 설정 조회 라이브 설정 조회
WRITE:LIVE_STREAM_SETTINGS 라이브 설정 변경 라이브 설정 변경
READ:LIVE_CHAT 채팅 이벤트 조회 채팅 이벤트 구독
WRITE:LIVE_CHAT 채팅 메시지 전송 채팅 메시지 전송
WRITE:LIVE_CHAT_NOTICE 채팅 공지 등록 채팅 공지 등록
READ:LIVE_CHAT_SETTINGS 채팅 설정 조회 채팅 설정 조회
WRITE:LIVE_CHAT_SETTINGS 채팅 설정 변경 채팅 설정 변경
WRITE:USER_BLOCK 사용자 추방/해제 사용자 추방, 추방 해제
READ:USER_BLOCK 추방 사용자 조회 추방 사용자 목록
READ:DONATION 후원 정보 조회 후원 이벤트 구독