개발자용 ChatGPT 로그인: OAuth 연동, 요금제 사용량, API 요금 영향

개발자를 위한 ChatGPT 로그인: 앱이 수신하는 정보, Plus 및 Pro 플랜 사용량과 주간 제한이 작동하는 방식, 그리고 OAuth 흐름을 테스트하는 방법.

Emmanuel Mumba

Emmanuel Mumba

2 October 2026

개발자용 ChatGPT 로그인: OAuth 연동, 요금제 사용량, API 요금 영향

Apidog 엔터프라이즈

온프레미스 배포

SSO & RBAC

SOC 2 준수

Apidog Enterprise 살펴보기

"ChatGPT로 로그인"은 전 세계 ChatGPT 사용자가 이용할 수 있는 OpenAI의 OAuth 2.0 및 OpenID Connect 로그인 서비스입니다. 귀하의 앱은 안정적인 계정 ID와 사용자의 이름, 이메일 주소 및 프로필 사진을 받게 됩니다. 2026년 9월 29일 DevDay 이후로, Plus 및 Pro 사용자는 참여 앱이 설정된 앱별 주간 한도 내에서 귀하의 API 키 대신 자신의 ChatGPT 요금제로 AI 요청을 실행하도록 허용할 수 있습니다. 귀하의 앱은 사용자의 대화, 메모리 또는 API 키를 절대 받지 않습니다.

두 번째 부분은 귀하의 청구서와 관련이 있습니다. 이 가이드는 흐름, 사용자에게 표시되는 요금제 사용 방식, 현재 통합 가능한 대상, 사용자 요금제가 귀하의 키를 대체해야 하는 시점, 그리고 Apidog에서 로그인 및 실패 경로를 테스트하는 방법을 다룹니다. 이벤트의 나머지 부분은 DevDay 2026 요약을 참조하십시오. 신원 확인과 권한 부여가 모호하다면 OAuth 대 OpenID를 먼저 읽어보십시오.

ChatGPT로 로그인 개요

항목 OpenAI 문서 내용
신원 확인 범위 openid profile email
요금제 사용 범위 (오픈 소스 흐름) offline_access resource.invoke chatgpt.tokens.use.direct, with resource=https://api.openai.com/v1
귀하의 앱이 받는 것 ID 토큰; 요금제 사용 시, 액세스 토큰 및 새로고침 토큰
요금제 사용 자격 Plus 및 Pro 사용자, 참여 앱에서
사용량이 계산되는 곳 요금제의 ChatGPT Work 및 Codex 사용량
앱별 제어 전체 주간 사용량의 일부로 주간 상한선; 상한선 이후의 크레딧은 기본적으로 비활성화됨
요금제 사용 토큰 액세스 토큰 1시간; 새로고침 토큰 30일, 새로고침 시마다 교체됨
개발자 접근 상업용 앱: 관심 양식을 통한 제한된 시험 사용. 오픈 소스 앱: 셀프 서비스

출처: ChatGPT로 로그인 문서, 토큰 참조 및 다른 앱에서 ChatGPT 요금제 사용에 대한 OpenAI의 도움말 문서.

귀하의 앱이 받는 것과 받지 않는 것

신원 확인은 기본값입니다. `openid profile email`을 요청하는 클라이언트는 ID 토큰을 받습니다. 웹사이트 가이드에 따르면, `profile`은 이름 및 프로필 사진과 같은 사용 가능한 클레임을 포함하며, `email`은 이메일 및 이메일 확인 클레임을 포함합니다. 신원 확인 범위는 ChatGPT 대화 또는 OpenAI API 리소스에 대한 접근 권한을 부여하지 않습니다.

계정은 이메일이 아닌, 확인된 `sub`와 발급자 및 클라이언트 ID를 기반으로 식별하십시오. OpenAI는 이메일 일치만으로는 소유권 증명이 아니라고 경고하므로, 기존 사용자에게 링크 확인을 요청하십시오.

요금제 사용은 별도의 승인입니다. 사용자가 추가 범위를 승인하면 토큰 응답은 적격한 응답 API 요청을 위한 액세스 토큰을 추가합니다. 신원 확인 전용 클라이언트는 `access_token`을 전혀 필요로 하지 않습니다. `id_token`이 유일하게 필요한 아티팩트입니다.

OAuth 흐름 작동 방식

웹사이트 흐름은 표준 PKCE를 사용한 권한 부여 코드 승인과 OIDC입니다. `https://auth.openai.com/.well-known/openid-configuration`에서 엔드포인트를 로드합니다. 문서에는 다음과 같은 운영 값이 나열되어 있습니다:

Issuer:                 https://auth.openai.com
Authorization endpoint: https://auth.openai.com/api/accounts/authorize
Token endpoint:         https://auth.openai.com/api/accounts/oauth/token
JWKS URI:               https://auth.openai.com/.well-known/jwks.json
  1. 귀하의 백엔드는 새로운 `state`, S256 챌린지가 있는 PKCE 검증자, 그리고 `nonce`를 생성합니다.
  2. 귀하의 클라이언트 ID, 정확한 리디렉션 URI 및 범위를 사용하여 브라우저를 권한 부여 엔드포인트로 리디렉션합니다.
  3. 사용자가 동의하면 OpenAI는 귀하의 콜백으로 코드를 반환합니다.
  4. 귀하의 백엔드는 `state`를 확인하고, 코드를 교환하며, ID 토큰의 서명, 발급자, 대상, 만료 및 nonce를 검증합니다.
  5. 로컬 계정을 찾거나 생성하거나 연결하고 자체 세션을 발행합니다.

공개 클라이언트는 비밀을 보내지 않습니다. `client_secret_basic`을 사용하는 기밀 클라이언트는 HTTP 기본 헤더에만 비밀을 보냅니다.

오픈 소스 도구는 다르게 등록됩니다. 오픈 소스 로그인 가이드는 `client_id=dynamic_agent_client`, 앱 이름으로 설정된 `agent_name_hint`, 그리고 호스트별 영구 `ext_agent_host_id`로 시작합니다. 콜백은 저장하고 재사용할 발급된 클라이언트 ID(예: `oaiapp_...`)를 반환합니다. 리디렉션은 `127.0.0.1` 루프백 URI이며 클라이언트 시크릿은 관련되지 않습니다.

사용자를 위한 요금제 사용 방식

사용자가 보는 내용과 귀하의 지원 문서에서 설명해야 할 내용은 다음과 같습니다:

사용자는 이 모든 것을 ChatGPT 설정, 사용량(`chatgpt.com/settings/usage`)에서 관리하며, OpenAI의 UI 가이드라인은 **사용량 관리** 링크를 통해 해당 페이지로 연결하도록 요청합니다.

출시 시 누가 참여하며, 클라이언트 ID를 얻는 방법

OpenAI의 DevDay 요약에는 Cognition의 Devin, Notion, Vercel, T3, OpenClaw 및 Dactyl을 포함한 16개의 요금제 사용 파트너가 언급되어 있습니다. The New Stack은 그 외에 Amp, Warp, Kilo Code, OpenCode를 나열하며, Lovable은 곧 출시될 예정이라고 표시되어 있습니다. 만약 OpenClaw를 실행 중이라면, 두 목록 모두에 포함됩니다.

The New Stack이 보도한 바에 따르면, 샘 알트만이 무대에서 발표한 내용은 다음과 같습니다: "이제 사용자들이 시작하기 위해 토큰 비용을 부담할 필요가 없습니다."

참여 방법은 귀하가 제공하는 서비스에 따라 다릅니다:

귀하의 API 요금 청구서에 대한 변경 사항

현재 귀하는 토큰당 비용을 지불하고 가격 책정을 통해 이를 회수합니다. 요금제 사용은 모델 비용을 사용자 구독으로 전환하므로, 귀하의 마진은 사용자가 AI를 얼마나 많이 사용하는지에 더 이상 의존하지 않습니다. 절충점은 제어입니다.

귀하의 API 키 사용자의 ChatGPT 요금제
누가 지불하는가 귀하, 토큰당 사용자의 요금제 (선택 동의 시에만 크레딧)
누가 사용할 수 있는가 모든 사용자 chatgpt.tokens.use.direct를 허용한 Plus 및 Pro 사용자
제한 귀하의 비율 제한 계층 주간 요금제 사용량, 앱별 상한선, Plus의 5시간 창
요청 형태 전체 응답 API store: false 및 stream: true 필수; temperature, max_output_tokens, 파일 검색 또는 코드 인터프리터 없음
일반적인 실패 계층을 초과할 때 429 429 subscription_sharing_usage_limit_exceeded, 또는 스트림 중간에 response.failed에서 해당 코드
대체 귀하가 설계 자동 없음: OpenAI는 청구를 전환하지 않음
무엇을 표시해야 하는가 귀하의 사용량 및 가격 "ChatGPT 요금제 사용 중", 사용량 관리 링크, 귀하의 어떤 요금제가 이를 지원하는지

이 제한 사항은 미리 보기 제한 페이지에서 가져온 것입니다: 저장된 대화 상태 또는 호스팅된 도구가 필요한 기능은 현재 사용자 요금제로 실행되지 않습니다.

합리적인 기본값은 하이브리드입니다: Plus 및 Pro 사용자의 대화형 작업에는 요금제 사용을, 그 외 모든 사용자 및 백그라운드 작업, CI, 예약된 에이전트에는 귀하의 키를 사용합니다. 상한선에 도달하면 사용량 관리를 표시하고 보조 옵션으로 귀하의 크레딧을 제공하십시오. API 키 대 OAuth 비교는 일반적인 절충점을 다루고, AI 에이전트를 위한 OAuth는 사용자를 대신하여 안전하게 작동하는 방법을 다룹니다.

Apidog에서 로그인 흐름 및 실패 경로를 테스트하는 방법

Apidog는 ChatGPT를 사용하여 아무도 로그인시키지 않습니다. 이는 귀하의 OAuth 설정, 토큰 호출 및 오류 처리를 테스트합니다. Apidog를 다운로드하고 환경을 생성하십시오.

1. 클라이언트를 변수로 저장합니다. `SIWC_CLIENT_ID`, `SIWC_REDIRECT_URI`를 추가하고, 기밀 클라이언트의 경우 `SIWC_CLIENT_SECRET`를 민감한 값으로 추가하며, 요금제 사용을 위한 `ACCESS_TOKEN`을 추가합니다. 저장된 요청에 비밀이 노출되지 않도록 `{{SIWC_CLIENT_ID}}`와 같이 참조합니다.

2. 권한 부여 코드 흐름을 실행합니다. 인증 탭에서 PKCE가 있는 OAuth 2.0 권한 부여 코드를 선택하고, 위에서 언급된 엔드포인트를 입력하고, 범위를 `openid profile email`로 설정한 다음, 귀하의 클라이언트에 등록된 콜백 URL을 사용하십시오. Apidog OAuth 2.0 가이드는 각 필드를 자세히 설명합니다.

3. 얻은 ID 토큰에 대해 단언합니다. 토큰 교환을 토큰 엔드포인트(코드, 검증자, 리디렉션 URI, 클라이언트 ID)에 대한 자체 POST로 저장하고 사후 처리기를 추가합니다. 서명 및 nonce 검사는 여전히 백엔드에 속합니다.

const body = pm.response.json();
pm.test("token exchange returned an ID token", () => {
  pm.expect(pm.response.code).to.eql(200);
  pm.expect(body.id_token).to.be.a("string");
});

const decode = require("atob");
const part = body.id_token.split(".")[1].replace(/-/g, "+").replace(/_/g, "/");
const claims = JSON.parse(decode(part + "=".repeat((4 - (part.length % 4)) % 4)));

pm.test("ID token claims match this client", () => {
  pm.expect(claims.iss).to.eql("https://auth.openai.com");
  pm.expect(claims.aud).to.include(pm.environment.get("SIWC_CLIENT_ID"));
  pm.expect(claims.sub).to.be.a("string").and.not.empty;
  pm.expect(claims.exp * 1000).to.be.above(Date.now());
});

`name`, `email`, `picture`는 사용 가능할 때 반환되므로 단언하는 대신 로그로 기록하십시오. 요금제 사용의 경우, `body.scope`에 `chatgpt.tokens.use.direct`가 포함되어 있는지 단언하십시오.

4. 실패 경로를 모의(Mock)합니다. 실제 Plus 계정은 부적절한 고정값이므로, Apidog 모의 서버에서 다음을 반환하십시오.

사례들을 테스트 시나리오로 연결하고 Apidog CLI를 사용하여 CI에서 실행하십시오. 오류 및 복구 페이지에 전체 목록이 있습니다.

5. 실제 호출을 확인합니다. 실제 요금제 토큰으로 문서의 스트리밍 요청을 보내고(Apidog에서 `Bearer {{ACCESS_TOKEN}}`으로) 스트림이 유일한 성공 신호인 `response.completed`로 끝나는지 확인하십시오.

curl --no-buffer https://api.openai.com/v1/responses \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "input": [{"role": "user", "content": "Say exactly: Hello, world!"}],
    "store": false,
    "stream": true
  }'

자주 묻는 질문

무료 사용자도 ChatGPT로 로그인할 수 있나요? ChatGPT 사용자는 전 세계적으로 로그인할 수 있습니다. 다른 앱 내에서 요금제를 사용하려면 Plus 또는 Pro가 필요합니다.

제 앱이 사용자의 OpenAI API 키를 받나요? 아니요. 귀하의 앱은 ID 토큰과, 요금제 사용 시, 적격한 응답 API 요청을 위한 OAuth 액세스 토큰을 받습니다.

사용자가 상한선에 도달하면 어떻게 되나요? 요청이 `subscription_sharing_usage_limit_exceeded` 오류와 함께 실패합니다: HTTP 429 오류, 또는 스트리밍 시작 후 `response.failed` 이벤트. 일시 중지하고 사용량 관리로 연결하십시오.

Plus 사용자가 파트너 앱을 통해 GPT-6.1 Sol을 실행할 수 있나요? 문서 예시에서는 요금제 토큰으로 `gpt-6.1-sol`을 사용하지만, 제공하기 전에 해당 토큰으로 계정의 모델을 나열해야 합니다. 자세한 내용은 GPT-6.1 Sol은 무료인가요?에서 확인하십시오.

다음 단계

상업용 앱을 운영 중이라면 지금 대기자 명단에 가입하고, 기다리는 동안 모의 환경을 기반으로 상한선 및 연결 해제 처리를 구축하십시오. 요금제 사용을 귀하의 API 청구 외의 선택 사항으로 간주하고 대체품으로 여기지 마십시오. 클라이언트 ID가 도착하는 날, 유일한 새로운 변수가 실제 토큰이 되도록 토큰 단언 및 실패 시나리오를 Apidog에 저장하십시오.

버튼

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요