การลงชื่อเข้าใช้ด้วย ChatGPT คือระบบ OAuth 2.0 และ OpenID Connect ของ OpenAI สำหรับผู้ใช้ ChatGPT ทั่วโลก แอปของคุณจะได้รับ ID บัญชีที่เสถียร พร้อมชื่อ อีเมล และรูปโปรไฟล์ ตั้งแต่ DevDay วันที่ 29 กันยายน 2026 ผู้ใช้ Plus และ Pro สามารถอนุญาตให้แอปที่เข้าร่วมรันคำขอ AI บนแผน ChatGPT ของตนได้ แทนการใช้ API key ของคุณ โดยกำหนดขีดจำกัดรายสัปดาห์ต่อแอปได้เอง แอปจะไม่ได้รับบทสนทนา ความทรงจำ หรือ API key ของผู้ใช้
บทความนี้เน้นผลกระทบด้านต้นทุนและการลงมือทำ: วิธีเลือกใช้แผนของผู้ใช้แทน API key ของคุณ วิธีอธิบายการใช้งานให้ผู้ใช้เข้าใจ และวิธีทดสอบ OAuth flow รวมถึงกรณีล้มเหลวใน Apidog ดูบริบทเพิ่มเติมได้ที่ สรุปงาน DevDay 2026 และหากต้องการทบทวนความต่างระหว่าง Identity กับ Authorization ให้เริ่มจาก OAuth vs OpenID
ภาพรวมการลงชื่อเข้าใช้ด้วย ChatGPT
| รายการ | สิ่งที่เอกสาร OpenAI ระบุ |
|---|---|
| ขอบเขตการระบุตัวตน | openid profile email |
| ขอบเขตการใช้งานแผนสำหรับโอเพนซอร์ส |
offline_access resource.invoke chatgpt.tokens.use.direct พร้อม resource=https://api.openai.com/v1
|
| สิ่งที่แอปได้รับ | ID token และเมื่อใช้แผน จะได้รับ access token กับ refresh token |
| คุณสมบัติในการใช้งานแผน | ผู้ใช้ Plus และ Pro ในแอปที่เข้าร่วม |
| ที่ที่การใช้งานถูกนับ | การใช้งาน ChatGPT Work และ Codex ของแผน |
| การควบคุมต่อแอป | ขีดจำกัดรายสัปดาห์เป็นสัดส่วนของการใช้งานรวมรายสัปดาห์ เครดิตหลังเกินขีดจำกัดปิดไว้โดยค่าเริ่มต้น |
| อายุโทเค็นสำหรับการใช้งานแผน | Access token อายุ 1 ชั่วโมง, refresh token อายุ 30 วัน และถูกแทนที่ทุกครั้งที่รีเฟรช |
| การเข้าถึงของนักพัฒนา | แอปเชิงพาณิชย์: ทดลองแบบจำกัดผ่านแบบฟอร์มแสดงความสนใจ; แอปโอเพนซอร์ส: บริการตนเอง |
แหล่งข้อมูล: เอกสารการลงชื่อเข้าใช้ด้วย ChatGPT, เอกสารอ้างอิงโทเค็น และบทความช่วยเหลือเรื่อง การใช้แผน ChatGPT ในแอปอื่น
สิ่งที่แอปของคุณได้รับ และสิ่งที่ไม่ได้รับ
การระบุตัวตนเป็นค่าเริ่มต้น หากไคลเอนต์ขอ scope ต่อไปนี้:
openid profile email
แอปจะได้รับ ID token ตาม คู่มือเว็บไซต์
-
profileครอบคลุมข้อมูล เช่น ชื่อและรูปโปรไฟล์ -
emailครอบคลุมอีเมลและสถานะการยืนยันอีเมล - Scope สำหรับ Identity ไม่ ให้สิทธิ์เข้าถึงบทสนทนา ChatGPT หรือทรัพยากร OpenAI API
ให้ผูกบัญชีภายในของคุณกับ claim sub ที่ตรวจสอบแล้ว รวมกับ issuer และ Client ID อย่าใช้อีเมลเป็นตัวระบุหลักเพียงอย่างเดียว เพราะอีเมลไม่ใช่หลักฐานการเป็นเจ้าของบัญชี หากผู้ใช้เดิมต้องการเชื่อมบัญชี ให้ขอให้ยืนยันการเชื่อมโยงอย่างชัดเจน
การใช้งานแผนเป็นสิทธิ์แยกต่างหาก เมื่อผู้ใช้อนุมัติ scope เพิ่มเติม การตอบกลับ token จะมี access token สำหรับเรียก Responses API ที่ได้รับอนุญาต
หากใช้เฉพาะการลงชื่อเข้าใช้ อย่าร้องขอ access token คุณต้องใช้เพียง
id_token
วิธีทำงานของ OAuth flow
เว็บไซต์ใช้มาตรฐาน Authorization Code grant with PKCE ร่วมกับ OIDC ให้โหลด endpoint จาก:
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
ลำดับการทำงานที่ควรนำไปใช้มีดังนี้:
- แบ็กเอนด์สร้าง
state, PKCE verifier พร้อม S256 challenge และnonceใหม่สำหรับทุก authorization request - เปลี่ยนเส้นทางเบราว์เซอร์ไปยัง authorization endpoint พร้อม Client ID, Redirect URI ที่ตรงกับค่าลงทะเบียน และ scope ที่ต้องการ
- ผู้ใช้ให้ความยินยอม แล้ว OpenAI ส่ง authorization code กลับไปยัง callback
- แบ็กเอนด์ตรวจสอบ
stateแลก code เป็น token และตรวจสอบลายเซ็น, issuer, audience, วันหมดอายุ และ nonce ของ ID token - ค้นหา สร้าง หรือเชื่อมโยงบัญชีภายใน ก่อนออก session ของแอปเอง
สำหรับ public client ห้ามส่ง client secret ส่วน confidential client ที่ใช้ client_secret_basic ต้องส่ง secret ผ่าน HTTP Basic header เท่านั้น
กรณีเครื่องมือโอเพนซอร์ส
เครื่องมือโอเพนซอร์สมีขั้นตอนลงทะเบียนต่างออกไป ตาม คู่มือการลงชื่อเข้าใช้สำหรับโอเพนซอร์ส:
- เริ่มต้นด้วย
client_id=dynamic_agent_client - ส่ง
agent_name_hintเป็นชื่อแอปของคุณ - ส่ง
ext_agent_host_idที่คงที่ต่อโฮสต์ - Callback จะคืน Client ID ที่ออกให้ เช่น
oaiapp_... - บันทึก Client ID นี้และใช้ซ้ำในครั้งถัดไป
- ใช้ Loopback redirect URI บน
127.0.0.1 - ไม่มี client secret
การใช้งานแผนทำงานอย่างไรสำหรับผู้ใช้
เอกสารในแอปและหน้า onboarding ควรอธิบายประเด็นต่อไปนี้ให้ชัดเจน:
คำขอที่มีสิทธิ์จะนับรวมในแผน
คำขอจะใช้โควต้าการใช้งาน ChatGPT Work และ Codex ของแผน Plus หรือ Proแต่ละแอปมีขีดจำกัดรายสัปดาห์
ผู้ใช้กำหนดเป็นเปอร์เซ็นต์ของการใช้งานรวมรายสัปดาห์ ตัวอย่างในเอกสารอยู่ระหว่าง 10% ถึง 100% ขีดจำกัดนี้เป็นเพดาน ไม่ใช่โควต้าที่จองไว้ให้แอปของคุณเครดิตเป็นแบบเลือกใช้
การใช้งานต่อหลังถึงขีดจำกัดถูกปิดไว้โดยค่าเริ่มต้น และผู้ใช้ต้องกำหนดขีดจำกัดแอปเป็น 100% ก่อนแผน Plus มีขีดจำกัดรวม 5 ชั่วโมง
ตาม หน้าบัญชีและเซสชัน ขีดจำกัดนี้ครอบคลุมทุกแอปที่ใช้แผน และไม่ใช้กับ Proการตัดการเชื่อมต่อหยุดการใช้งานในอนาคต
ไม่ย้อนกลับการใช้งานที่เกิดขึ้นแล้ว OpenAI จะไม่แจ้งเตือนแอปของคุณโดยตรง คุณจะทราบเมื่อ request หรือ refresh token ล้มเหลว
ผู้ใช้จัดการการตั้งค่าเหล่านี้ได้ใน ChatGPT ที่ chatgpt.com/settings/usage ตาม แนวทาง UI ของ OpenAI แอปของคุณควรแสดงลิงก์ จัดการการใช้งาน ในจุดที่เกี่ยวข้อง
ใครบ้างที่เปิดตัว และคุณจะได้รับ Client ID อย่างไร
สรุปงาน DevDay ของ OpenAI ระบุพันธมิตรการใช้งานแผน 16 ราย เช่น Devin ของ Cognition, Notion, Vercel, T3, OpenClaw และ Dactyl ขณะที่ The New Stack ระบุ Amp, Warp, Kilo Code และ OpenCode เพิ่มเติม รวมถึง Lovable ที่มีกำหนดเปิดตัวในภายหลัง หากคุณใช้ OpenClaw จะพบชื่อนี้ในทั้งสองรายการ
Sam Altman กล่าวบนเวทีตามที่ The New Stack รายงานว่า:
“ตอนนี้คุณไม่จำเป็นต้องรับผิดชอบค่าใช้จ่ายโทเค็นเพื่อให้พวกเขาใช้งานได้”
แนวทางเข้าร่วมขึ้นอยู่กับประเภทแอป:
- แอปเชิงพาณิชย์หรือแอปที่โฮสต์: การลงชื่อเข้าใช้เป็นการทดลองแบบจำกัด คุณสามารถ ร้องขอ Client ID ผ่านแบบฟอร์มแสดงความสนใจของ OpenAI ได้ ทั้งกรณีใช้ Identity อย่างเดียวและกรณีใช้แผนด้วย
- เครื่องมือโอเพนซอร์สและโฮสต์ในเครื่อง: การใช้งานแผนเปิดให้พันธมิตรโอเพนซอร์สผ่าน flow แบบบริการตนเอง
อะไรจะเปลี่ยนไปสำหรับค่า API ของคุณ
ปกติคุณจ่ายค่าบริการตามจำนวนโทเค็น แล้วเรียกเก็บเงินคืนผ่านโมเดลธุรกิจของคุณ การใช้งานแผนย้ายต้นทุนโมเดลไปยัง subscription ของผู้ใช้ ทำให้กำไรของคุณไม่ผูกกับปริมาณการใช้งาน AI ของผู้ใช้โดยตรง แต่คุณจะควบคุมข้อจำกัดและทางเลือกสำรองได้น้อยลง
| คีย์ API ของคุณ | แผน ChatGPT ของผู้ใช้ | |
|---|---|---|
| ใครจ่าย | คุณ ตามจำนวนโทเค็น | แผนของผู้ใช้ โดยเครดิตใช้เฉพาะเมื่อเลือกใช้ |
| ใครใช้ได้ | ผู้ใช้ทุกคน | ผู้ใช้ Plus และ Pro ที่อนุญาต chatgpt.tokens.use.direct
|
| ขีดจำกัด | Rate limit ของคุณ | การใช้งานแผนรายสัปดาห์, ขีดจำกัดต่อแอป และหน้าต่างเวลา 5 ชั่วโมงของ Plus |
| รูปแบบคำขอ | Responses API เต็มรูปแบบ | ต้องมี store: false และ stream: true; ไม่มี temperature, max_output_tokens, file search หรือ Code Interpreter |
| ความล้มเหลวทั่วไป | 429 เมื่อเกิน rate limit | 429 subscription_sharing_usage_limit_exceeded หรือ error เดียวกันใน response.failed ระหว่างสตรีม |
| ทางเลือกสำรอง | คุณออกแบบเอง | ไม่มีอัตโนมัติ OpenAI ไม่เปลี่ยนผู้รับผิดชอบค่าใช้จ่าย |
| สิ่งที่ควรแสดงใน UI | การใช้งานและราคาของคุณ | “กำลังใช้แผน ChatGPT”, ลิงก์จัดการการใช้งาน และแผนที่รองรับ |
ข้อจำกัดเหล่านี้มาจาก หน้าข้อจำกัดการดูตัวอย่าง: ฟีเจอร์ที่ต้องเก็บสถานะบทสนทนา หรือใช้เครื่องมือที่โฮสต์ไว้ ยังไม่ทำงานบนแผนของผู้ใช้ในปัจจุบัน
แนวทางที่เหมาะสมคือใช้โมเดลแบบไฮบริด:
- ใช้แผนของผู้ใช้สำหรับงานแบบ interactive ของผู้ใช้ Plus และ Pro
- ใช้ API key ของคุณสำหรับผู้ใช้รายอื่น
- ใช้ API key ของคุณสำหรับ background jobs, CI และ agent ที่ทำงานตามเวลา
- เมื่อชนขีดจำกัด ให้แสดงลิงก์จัดการการใช้งาน และเสนอเครดิตหรือ billing path ของคุณเป็นทางเลือก
ดูแนวคิดเพิ่มเติมได้จาก การเปรียบเทียบ API key vs OAuth และ OAuth สำหรับ AI agents
วิธีทดสอบ flow การลงชื่อเข้าใช้และเส้นทางความล้มเหลวใน Apidog
Apidog ไม่ได้ลงชื่อเข้าใช้ผู้ใช้ด้วย ChatGPT โดยตรง แต่ช่วยทดสอบการตั้งค่า OAuth, token exchange และการจัดการข้อผิดพลาดของระบบคุณได้ เริ่มจาก ดาวน์โหลด Apidog แล้วสร้าง environment แยกสำหรับการทดสอบ
1. จัดเก็บ Client และ token เป็นตัวแปร
เพิ่มตัวแปร sensitive ต่อไปนี้ใน environment:
SIWC_CLIENT_ID
SIWC_REDIRECT_URI
SIWC_CLIENT_SECRET
ACCESS_TOKEN
SIWC_CLIENT_SECRET ใช้เฉพาะ confidential client และ ACCESS_TOKEN ใช้สำหรับทดสอบการใช้งานแผน
อ้างอิงตัวแปรใน request ด้วยรูปแบบ:
{{SIWC_CLIENT_ID}}
วิธีนี้ช่วยป้องกันไม่ให้ข้อมูลลับปรากฏใน request ที่บันทึกไว้
2. รัน Authorization Code flow พร้อม PKCE
ในแท็บ Auth ของ Apidog:
- เลือก OAuth 2.0
- เลือก flow แบบ Authorization Code with PKCE
- กำหนด authorization endpoint และ token endpoint ตามค่าด้านบน
- ตั้ง scope เป็น:
openid profile email
- ใช้ callback URL ที่ลงทะเบียนไว้กับ Client ID ของคุณ
ดูขั้นตอนของแต่ละฟิลด์ได้จาก คู่มือ Apidog OAuth 2.0
3. ตรวจสอบ ID token ที่ได้รับ
บันทึก token exchange เป็น POST request แยกไปยัง token endpoint โดยส่ง code, PKCE verifier, redirect URI และ Client ID
เพิ่ม post-processor เพื่อยืนยัน response ขั้นพื้นฐาน:
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 เป็นข้อมูลที่อาจมีใน response แทนการบังคับตรวจสอบว่าต้องมีเสมอ
การตรวจสอบลายเซ็น JWT และ nonce ต้องทำในแบ็กเอนด์ของคุณเสมอ ไม่ใช่ในเครื่องมือทดสอบเพียงอย่างเดียว
หากทดสอบการใช้งานแผน ให้ตรวจสอบว่า body.scope มี:
chatgpt.tokens.use.direct
4. จำลองเส้นทางความล้มเหลว
บัญชี Plus จริงไม่เหมาะสำหรับทดสอบทุกกรณี ใช้ Apidog Mock Server เพื่อจำลอง response เหล่านี้:
ผู้ใช้ปฏิเสธการใช้งานแผน
ส่ง token response ที่scopeไม่มีchatgpt.tokens.use.directแอปควรคง session การลงชื่อเข้าใช้ไว้ และเสนอให้ผู้ใช้เปิดใช้งานแผนหรือเลือกเส้นทางเรียกเก็บเงินอื่นถึงขีดจำกัดการใช้งาน
ส่ง HTTP 429 พร้อมerror.codeเป็นsubscription_sharing_usage_limit_exceededหรือส่งรหัสเดียวกันผ่านresponse.failedระหว่างสตรีม ตรวจสอบว่าแอปหยุดส่งคำขอผ่านแผนผู้ใช้ไม่มีสิทธิ์
ส่ง HTTP 403 พร้อมsubscription_sharing_user_not_eligibleแอปไม่ควร retry หรือวนกลับไปทำ OAuth flow ซ้ำผู้ใช้ตัดการเชื่อมต่อแอป
จำลอง refresh token ที่คืนinvalid_grantหรือ HTTP 401 พร้อมsubscription_sharing_invalid_userแอปต้องล้าง token ที่เก็บไว้ และขอให้ผู้ใช้ลงชื่อเข้าใช้อีกครั้ง
เชื่อมกรณีเหล่านี้เป็น test scenario และรันใน CI ด้วย Apidog CLI ดูรายการ error และแนวทางกู้คืนเพิ่มเติมได้จาก หน้าข้อผิดพลาดและการกู้คืน
5. ตรวจสอบการเรียกใช้งานจริง
เมื่อมี plan token จริง ให้ส่ง request แบบ streaming โดยตั้ง Authorization เป็น Bearer {{ACCESS_TOKEN}} ใน Apidog
ตัวอย่าง curl:
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
}'
ยืนยันว่า stream จบด้วย event:
response.completed
นี่คือสัญญาณความสำเร็จที่ควรใช้ตัดสินว่าคำขอเสร็จสมบูรณ์
คำถามที่พบบ่อย
ผู้ใช้ Free สามารถลงชื่อเข้าใช้ด้วย ChatGPT ได้หรือไม่?
ได้ การลงชื่อเข้าใช้เปิดให้ผู้ใช้ ChatGPT ทั่วโลก แต่การใช้แผนในแอปอื่นต้องใช้ Plus หรือ Pro
แอปได้รับ OpenAI API key ของผู้ใช้หรือไม่?
ไม่ แอปจะได้รับ ID token และหากผู้ใช้อนุมัติการใช้งานแผน จะได้รับ OAuth access token สำหรับคำขอ Responses API ที่มีสิทธิ์เท่านั้น
จะเกิดอะไรขึ้นเมื่อผู้ใช้ถึงขีดจำกัด?
คำขอจะล้มเหลวด้วย subscription_sharing_usage_limit_exceeded ซึ่งอาจเป็น HTTP 429 หรือ event response.failed หลังเริ่มสตรีมแล้ว ให้หยุดการใช้งานแผนชั่วคราว และแสดงลิงก์จัดการการใช้งาน
ผู้ใช้ Plus สามารถรัน GPT-6.1 Sol ผ่านแอปพันธมิตรได้หรือไม่?
ตัวอย่างในเอกสารใช้ gpt-6.1-sol กับ plan token แต่ก่อนนำเสนอโมเดลนี้ในแอป ควรดึงรายการโมเดลด้วย token ของบัญชีนั้นก่อน ดูเพิ่มเติมได้ที่ GPT-6.1 Sol ฟรีหรือไม่
ขั้นตอนต่อไป
หากคุณกำลังพัฒนาแอปเชิงพาณิชย์ ให้เข้าร่วมรายการรอเพื่อขอ Client ID และเริ่มสร้าง test suite สำหรับกรณีต่อไปนี้ทันที:
- token validation
- ผู้ใช้ปฏิเสธ plan usage
- usage limit exceeded
- ผู้ใช้ไม่มีสิทธิ์
- การตัดการเชื่อมต่อและ refresh token ล้มเหลว
ระหว่างรอ ให้ถือว่า plan usage เป็นทางเลือกเพิ่มเติมจาก API billing ของคุณ ไม่ใช่สิ่งทดแทนทั้งหมด บันทึก token validation และ failure scenarios ใน Apidog เพื่อให้เมื่อได้รับ Client ID แล้ว สิ่งที่ต้องเปลี่ยนจริง ๆ เหลือเพียงการใช้ token จริงใน environment ของคุณ
Top comments (0)