Đăng nhập bằng ChatGPT là hình thức đăng nhập OAuth 2.0 và OpenID Connect của OpenAI, có sẵn cho người dùng ChatGPT trên toàn cầu. Ứng dụng của bạn sẽ nhận được một ID tài khoản ổn định cùng với tên, địa chỉ email và ảnh hồ sơ của người dùng. Kể từ DevDay vào ngày 29 tháng 9 năm 2026, người dùng Plus và Pro cũng có thể cho phép các ứng dụng tham gia chạy các yêu cầu AI trên gói ChatGPT của họ thay vì khóa API của bạn, theo một giới hạn hàng tuần mà họ tự đặt cho mỗi ứng dụng. Ứng dụng của bạn không bao giờ nhận được các cuộc trò chuyện, ký ức hoặc khóa API của người dùng.
Phần thứ hai liên quan đến hóa đơn của bạn. Hướng dẫn này bao gồm luồng hoạt động, cách người dùng thấy việc sử dụng gói, ai có thể tích hợp ngay hôm nay, khi nào gói của người dùng nên thay thế khóa của bạn và cách kiểm tra đăng nhập cùng các lỗi có thể xảy ra trong Apidog. Đối với các sự kiện còn lại, hãy xem tổng hợp DevDay 2026; nếu khái niệm danh tính so với ủy quyền còn mơ hồ, hãy đọc OAuth so với OpenID trước.
Tổng quan về Đăng nhập bằng ChatGPT
| Mục | Những gì OpenAI tài liệu |
|---|---|
| Phạm vi định danh (Identity scopes) | openid profile email |
| Phạm vi sử dụng gói (Plan usage scopes) (luồng mã nguồn mở) | offline_access resource.invoke chatgpt.tokens.use.direct, với resource=https://api.openai.com/v1 |
| Ứng dụng của bạn nhận được | Một ID token; khi sử dụng gói, một access token và một refresh token |
| Điều kiện sử dụng gói | Người dùng Plus và Pro, trong các ứng dụng tham gia |
| Nơi tính toán mức sử dụng | Mức sử dụng ChatGPT Work và Codex của gói |
| Kiểm soát từng ứng dụng | Giới hạn hàng tuần dưới dạng phần trăm tổng mức sử dụng hàng tuần; tín dụng sau khi vượt giới hạn bị tắt theo mặc định |
| Token sử dụng gói | Access token 1 giờ; refresh token 30 ngày, được thay thế sau mỗi lần làm mới |
| Quyền truy cập của nhà phát triển | Ứng dụng thương mại: dùng thử giới hạn thông qua biểu mẫu quan tâm. Ứng dụng mã nguồn mở: tự phục vụ |
Nguồn: tài liệu Đăng nhập bằng ChatGPT, tham chiếu token và bài viết trợ giúp của OpenAI về cách sử dụng gói ChatGPT của bạn trong các ứng dụng khác.
Những gì ứng dụng của bạn nhận được và những gì không
Định danh là mặc định. Một ứng dụng khách yêu cầu openid profile email sẽ nhận được một ID token. Theo hướng dẫn trang web, profile bao gồm các xác nhận có sẵn như tên và ảnh hồ sơ, còn email bao gồm email và xác nhận xác minh email. Các phạm vi định danh không cấp quyền truy cập vào các cuộc trò chuyện trên ChatGPT hoặc tài nguyên OpenAI API.
Hãy xác định tài khoản dựa trên sub đã xác minh cùng với nhà phát hành và ID ứng dụng khách, chứ không phải email. OpenAI cảnh báo rằng việc khớp email đơn thuần không phải là bằng chứng về quyền sở hữu, vì vậy hãy yêu cầu người dùng hiện tại xác nhận một liên kết.
Việc sử dụng gói là một quyền cấp riêng biệt. Nếu người dùng chấp thuận các phạm vi bổ sung, phản hồi token sẽ thêm một access token cho các yêu cầu API Phản hồi đủ điều kiện. Các ứng dụng khách chỉ dùng định danh không nên yêu cầu access_token chút nào: id_token là tạo phẩm duy nhất được yêu cầu.
Luồng OAuth hoạt động như thế nào
Luồng trang web là chuẩn cấp phép Mã ủy quyền với PKCE cộng với OIDC. Tải các điểm cuối từ https://auth.openai.com/.well-known/openid-configuration. Tài liệu liệt kê các giá trị sản xuất sau:
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
- Hệ thống backend của bạn tạo một
statemới, một trình xác minh PKCE với thử thách S256 và mộtnonce. - Nó chuyển hướng trình duyệt đến điểm cuối ủy quyền với ID ứng dụng khách của bạn, URI chuyển hướng chính xác và các phạm vi.
- Người dùng đồng ý, và OpenAI trả về một mã đến hàm callback của bạn.
- Hệ thống backend của bạn kiểm tra
state, trao đổi mã và xác minh chữ ký, nhà phát hành, đối tượng, thời gian hết hạn và nonce của ID token. - Nó tìm, tạo hoặc liên kết tài khoản cục bộ và cấp phiên riêng cho tài khoản đó.
Các ứng dụng khách công khai không gửi khóa bí mật. Một ứng dụng khách bảo mật sử dụng client_secret_basic chỉ gửi khóa bí mật của nó trong tiêu đề HTTP Basic.
Các công cụ mã nguồn mở đăng ký khác nhau. Hướng dẫn đăng nhập mã nguồn mở bắt đầu với client_id=dynamic_agent_client, một agent_name_hint được đặt theo tên ứng dụng của bạn và một ext_agent_host_id cố định cho mỗi máy chủ. Hàm callback trả về một ID ứng dụng khách đã cấp (chẳng hạn như oaiapp_...) để lưu và tái sử dụng; URI chuyển hướng là 127.0.0.1 loopback và không có khóa bí mật ứng dụng khách nào liên quan.
Cách sử dụng gói hoạt động đối với người dùng
Những gì người dùng của bạn thấy và những gì tài liệu hỗ trợ của bạn nên giải thích:
- Các yêu cầu đủ điều kiện được tính vào gói. Chúng dựa trên mức sử dụng ChatGPT Work và Codex trong gói Plus hoặc Pro của người dùng.
- Mỗi ứng dụng có một giới hạn hàng tuần. Người dùng đặt giới hạn này dưới dạng phần trăm tổng mức sử dụng hàng tuần (ví dụ cài đặt trong tài liệu chạy từ 10% đến 100%). Đây là một mức trần, không phải một nhóm tài nguyên được dành riêng, vì vậy việc sử dụng nhiều ở nơi khác có thể làm cạn kiệt gói trước.
- Tín dụng là tùy chọn tham gia. Việc tiếp tục sử dụng bằng tín dụng sau khi đạt giới hạn bị tắt theo mặc định và yêu cầu giới hạn ứng dụng phải ở mức 100%.
- Gói Plus có giới hạn năm giờ chung. Theo trang tài khoản và phiên, nó áp dụng cho mọi ứng dụng sử dụng gói. Nó không áp dụng cho gói Pro.
- Ngắt kết nối sẽ dừng việc sử dụng trong tương lai. Nó không đảo ngược mức sử dụng đã tiêu thụ và OpenAI không thông báo cho ứng dụng của bạn; bạn sẽ biết khi một yêu cầu hoặc làm mới thất bại.
Người dùng quản lý tất cả những điều này trong Cài đặt ChatGPT, Sử dụng (chatgpt.com/settings/usage), và hướng dẫn giao diện người dùng của OpenAI yêu cầu bạn liên kết đến đó với mục Quản lý mức sử dụng.
Ai tham gia khi ra mắt và cách bạn nhận được ID ứng dụng khách
Bản tóm tắt DevDay của OpenAI nêu tên 16 đối tác sử dụng gói, bao gồm Devin của Cognition, Notion, Vercel, T3, OpenClaw và Dactyl. The New Stack liệt kê Amp, Warp, Kilo Code và OpenCode trong số những đối tác khác, với Lovable được đánh dấu là sắp ra mắt. Nếu bạn sử dụng OpenClaw, nó có mặt trong cả hai danh sách.
Bài trình bày của Sam Altman trên sân khấu, như The New Stack đã đưa tin: “giờ đây bạn không cần phải chi trả chi phí token của họ để họ bắt đầu.”
Cách bạn tham gia tùy thuộc vào những gì bạn cung cấp:
- Ứng dụng thương mại hoặc được lưu trữ: đăng nhập là một thử nghiệm giới hạn. Bạn yêu cầu một ID ứng dụng khách bằng cách tham gia danh sách chờ thông qua biểu mẫu quan tâm của OpenAI, cho dù bạn chỉ muốn định danh hay cả việc sử dụng gói (các URL trong tài liệu gọi việc sử dụng gói là “chia sẻ token”).
- Công cụ mã nguồn mở và được lưu trữ cục bộ: việc sử dụng gói mở cho tất cả các đối tác mã nguồn mở thông qua quy trình tự phục vụ ở trên.
Những thay đổi đối với hóa đơn API của bạn
Hiện nay, bạn trả tiền cho mỗi token và thu hồi chi phí này thông qua giá cả. Việc sử dụng gói sẽ chuyển chi phí mô hình sang gói đăng ký của người dùng, vì vậy lợi nhuận của bạn không còn phụ thuộc vào mức độ họ sử dụng AI nữa. Đánh đổi là quyền kiểm soát.
| Khóa API của bạn | Gói ChatGPT của người dùng | |
|---|---|---|
| Ai thanh toán | Bạn, theo mỗi token | Gói của người dùng (chỉ tín dụng nếu họ chọn tham gia) |
| Ai có thể sử dụng | Mọi người dùng | Người dùng Plus và Pro đã cấp quyền chatgpt.tokens.use.direct |
| Giới hạn | Bậc giới hạn tốc độ của bạn | Mức sử dụng gói hàng tuần, giới hạn theo ứng dụng, cửa sổ năm giờ của gói Plus |
| Hình dạng yêu cầu | Toàn bộ API Phản hồi | Yêu cầu store: false và stream: true; không có temperature, max_output_tokens, tìm kiếm tệp hoặc Trình thông dịch mã |
| Lỗi điển hình | 429 khi bạn vượt quá bậc của mình | 429 subscription_sharing_usage_limit_exceeded, hoặc mã đó trong một response.failed giữa luồng |
| Phương án dự phòng | Bạn tự thiết kế | Không tự động: OpenAI không chuyển đổi thanh toán |
| Những gì hiển thị | Mức sử dụng và giá của riêng bạn | “Đang sử dụng gói ChatGPT”, một liên kết Quản lý mức sử dụng, những gói nào của bạn hỗ trợ nó |
Các hạn chế đến từ trang giới hạn bản xem trước: các tính năng yêu cầu trạng thái cuộc trò chuyện được lưu trữ hoặc các công cụ được lưu trữ sẽ không chạy trên gói của người dùng hôm nay.
Một mặc định hợp lý là kết hợp: sử dụng gói cho công việc tương tác của người dùng Plus và Pro, khóa của bạn cho tất cả những người khác và cho các công việc nền, CI và các tác nhân theo lịch trình. Khi đạt giới hạn, hãy hiển thị Quản lý mức sử dụng và cung cấp tín dụng của riêng bạn như một tùy chọn thứ cấp. So sánh khóa API và OAuth bao gồm sự đánh đổi chung, và OAuth cho các tác nhân AI bao gồm việc hành động thay mặt người dùng một cách an toàn.
Cách kiểm tra luồng đăng nhập và các đường dẫn lỗi trong Apidog
Apidog không đăng nhập bất kỳ ai bằng ChatGPT. Nó thực hiện thiết lập OAuth, các cuộc gọi token và xử lý lỗi của bạn. Tải xuống Apidog và tạo một môi trường.
1. Lưu ứng dụng khách dưới dạng biến. Thêm SIWC_CLIENT_ID, SIWC_REDIRECT_URI, và đối với một ứng dụng khách bảo mật, SIWC_CLIENT_SECRET dưới dạng giá trị nhạy cảm, cộng với ACCESS_TOKEN cho việc sử dụng gói. Tham chiếu chúng dưới dạng {{SIWC_CLIENT_ID}} để không có khóa bí mật nào tồn tại trong yêu cầu đã lưu.
2. Chạy luồng Mã ủy quyền. Trong tab Auth, chọn OAuth 2.0 với Mã ủy quyền kèm PKCE, nhập các điểm cuối ở trên, đặt phạm vi thành openid profile email và sử dụng URL callback đã đăng ký cho ứng dụng khách của bạn. Hướng dẫn OAuth 2.0 của Apidog sẽ hướng dẫn chi tiết từng trường.
3. Xác nhận ID token bạn nhận được. Lưu việc trao đổi token dưới dạng một yêu cầu POST riêng đến điểm cuối token (mã, trình xác minh, URI chuyển hướng, ID ứng dụng khách) và thêm một bộ xử lý hậu kỳ vào đó. Việc kiểm tra chữ ký và nonce vẫn thuộc về backend của bạn.
const body = pm.response.json();
pm.test("trao đổi token đã trả về một 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("xác nhận của ID token khớp với ứng dụng khách này", () => {
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());
});
Ghi nhật ký name, email và picture thay vì xác nhận chúng, vì chúng được trả về khi có sẵn. Đối với việc sử dụng gói, hãy xác nhận rằng body.scope chứa chatgpt.tokens.use.direct.
4. Giả lập các đường dẫn lỗi. Một tài khoản Plus thực tế là một vật cố định kém, vì vậy hãy trả về những điều sau từ máy chủ giả lập Apidog:
- Sử dụng gói bị từ chối: phản hồi token mà
scopethiếuchatgpt.tokens.use.direct. Ứng dụng của bạn nên giữ nguyên việc đăng nhập và đề xuất bật tính năng sử dụng gói hoặc sử dụng một đường dẫn thanh toán khác. - Đạt giới hạn: 429 với
error.codesubscription_sharing_usage_limit_exceeded, cộng với cùng mã đó trong mộtresponse.failedgiữa luồng. Xác nhận rằng ứng dụng của bạn tạm dừng các yêu cầu gói. - Không đủ điều kiện: 403
subscription_sharing_user_not_eligible. Không thử lại hoặc lặp lại qua OAuth. - Bị ngắt kết nối: một lệnh làm mới trả về
invalid_grant, hoặc 401subscription_sharing_invalid_user. Xóa token và yêu cầu đăng nhập lại.
Xâu chuỗi các trường hợp thành một kịch bản kiểm thử và chạy nó trong CI bằng Apidog CLI. Trang lỗi và phục hồi liệt kê toàn bộ các trường hợp.
5. Kiểm tra cuộc gọi trực tiếp. Với một token gói thực tế, hãy gửi yêu cầu streaming của tài liệu (trong Apidog, dưới dạng Bearer {{ACCESS_TOKEN}}) và xác nhận luồng kết thúc bằng response.completed, tín hiệu thành công duy nhất:
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
}'
Câu hỏi thường gặp
Người dùng miễn phí có thể đăng nhập bằng ChatGPT không? Đăng nhập có sẵn cho người dùng ChatGPT trên toàn cầu. Việc sử dụng gói trong một ứng dụng khác yêu cầu tài khoản Plus hoặc Pro.
Ứng dụng của tôi có nhận được khóa API OpenAI của người dùng không? Không. Bạn nhận được một ID token và, khi sử dụng gói, một access token OAuth cho các yêu cầu API Phản hồi đủ điều kiện.
Điều gì xảy ra khi người dùng đạt giới hạn? Các yêu cầu sẽ thất bại với subscription_sharing_usage_limit_exceeded: một mã HTTP 429, hoặc một sự kiện response.failed sau khi streaming bắt đầu. Tạm dừng và liên kết đến Quản lý mức sử dụng.
Người dùng Plus có thể chạy GPT-6.1 Sol thông qua một ứng dụng đối tác không? Ví dụ trong tài liệu sử dụng gpt-6.1-sol với một token gói, nhưng hãy liệt kê các mô hình của tài khoản với token đó trước khi cung cấp một mô hình. Xem thêm trong GPT-6.1 Sol có miễn phí không.
Bước tiếp theo
Nếu bạn đang vận hành một ứng dụng thương mại, hãy tham gia danh sách chờ ngay bây giờ, và xây dựng cơ chế xử lý giới hạn và ngắt kết nối của bạn dựa trên các giả lập trong khi chờ đợi. Hãy coi việc sử dụng gói là một tùy chọn bên cạnh việc thanh toán API của riêng bạn, chứ không phải là một sự thay thế. Lưu các xác nhận token và kịch bản lỗi vào Apidog, để vào ngày ID ứng dụng khách của bạn đến, biến số mới duy nhất là token thật.
