Fundamentals

OAuth

OpenClaw รองรับ OAuth ("การตรวจสอบสิทธิ์ด้วยการสมัครสมาชิก") สำหรับผู้ให้บริการที่มีตัวเลือกนี้ โดยเฉพาะ OpenAI Codex (ChatGPT OAuth) และ การนำ Anthropic Claude CLI มาใช้ซ้ำ สำหรับ Anthropic ในทางปฏิบัติแบ่งเป็นดังนี้:

  • คีย์ API ของ Anthropic: ใช้การเรียกเก็บเงินผ่าน API ของ Anthropic ตามปกติ
  • Anthropic Claude CLI / การตรวจสอบสิทธิ์ด้วยการสมัครสมาชิกภายใน OpenClaw: เจ้าหน้าที่ Anthropic แจ้งเราว่าอนุญาตการใช้งานลักษณะนี้อีกครั้ง ดังนั้น OpenClaw จึงถือว่าการนำ Claude CLI มาใช้ซ้ำและ การใช้ claude -p ได้รับอนุญาตสำหรับการผสานรวมนี้ เว้นแต่ Anthropic จะเผยแพร่นโยบายใหม่ สำหรับการใช้ Anthropic ในระบบจริง การตรวจสอบสิทธิ์ด้วยคีย์ API ยังคง เป็นแนวทางที่ปลอดภัยกว่าและแนะนำให้ใช้

OpenClaw จัดเก็บทั้งการตรวจสอบสิทธิ์ด้วยคีย์ API ของ OpenAI และ ChatGPT/Codex OAuth ไว้ภายใต้ รหัสผู้ให้บริการมาตรฐาน openai รหัสโปรไฟล์ openai-codex:* รุ่นเก่าและ รายการ auth.order.openai-codex เป็นสถานะเดิมที่ซ่อมแซมได้ด้วย openclaw doctor --fix; สำหรับการกำหนดค่าใหม่ ให้ใช้รหัสโปรไฟล์ openai:* และ auth.order.openai

หน้านี้ครอบคลุม:

  • วิธีการทำงานของ การแลกเปลี่ยนโทเค็น OAuth (PKCE)
  • ตำแหน่งที่ จัดเก็บ โทเค็น (และเหตุผล)
  • วิธีจัดการ หลายบัญชี (โปรไฟล์ + การแทนค่าระดับเซสชัน)

Plugin ของผู้ให้บริการที่มาพร้อมขั้นตอน OAuth หรือคีย์ API ของตนเองจะทำงานผ่าน จุดเข้าเดียวกัน:

bash
openclaw models auth login --provider <id>

ปลายทางรวมโทเค็น (เหตุผลที่ต้องมี)

โดยทั่วไปผู้ให้บริการ OAuth จะออกโทเค็นรีเฟรชใหม่ทุกครั้งที่เข้าสู่ระบบหรือรีเฟรช ผู้ให้บริการบางรายทำให้โทเค็นรีเฟรชก่อนหน้าใช้การไม่ได้ เมื่อมีการออกโทเค็นใหม่ สำหรับผู้ใช้/แอปเดียวกัน อาการที่พบในทางปฏิบัติคือ เมื่อเข้าสู่ระบบผ่านทั้ง OpenClaw และ Claude Code / Codex CLI ต่อมาระบบจะสุ่มนำรายการใดรายการหนึ่งออกจากระบบ

เพื่อลดปัญหานี้ OpenClaw จึงถือว่าที่เก็บโปรไฟล์การตรวจสอบสิทธิ์เป็น ปลายทางรวมโทเค็น:

  • รันไทม์อ่านข้อมูลประจำตัวจากตำแหน่งเดียวต่อเอเจนต์
  • หลายโปรไฟล์สามารถอยู่ร่วมกันและกำหนดเส้นทางได้อย่างแน่นอน
  • การนำ CLI ภายนอกมาใช้ซ้ำขึ้นอยู่กับผู้ให้บริการ: เมื่อ OpenClaw เป็นเจ้าของโปรไฟล์ OAuth ภายในเครื่องสำหรับผู้ให้บริการแล้ว โทเค็นรีเฟรชภายในเครื่องจะเป็นข้อมูลมาตรฐาน หากโทเค็นรีเฟรช ภายในเครื่องนั้นถูกปฏิเสธ OpenClaw จะรายงานว่าต้องตรวจสอบสิทธิ์โปรไฟล์ใหม่ แทนการย้อนกลับไปใช้ข้อมูลโทเค็นจาก CLI ภายนอก การเริ่มต้นจาก Codex CLI มีขอบเขตแคบยิ่งกว่า โดยทำได้เพียงใส่ข้อมูลเริ่มต้นให้โปรไฟล์รูปแบบ openai:default ที่ว่างอยู่ ก่อนที่ OpenClaw จะเป็นเจ้าของ OAuth สำหรับ ผู้ให้บริการนั้น หลังจากนั้น การรีเฟรชที่ OpenClaw เป็นเจ้าของจะยังคงเป็นข้อมูลมาตรฐาน
  • เส้นทางสถานะ/การเริ่มทำงานจะจำกัดการค้นหา CLI ภายนอกให้อยู่ในชุดผู้ให้บริการ ที่กำหนดค่าไว้แล้ว เพื่อไม่ให้ตรวจสอบที่เก็บข้อมูลการเข้าสู่ระบบของ CLI ที่ไม่เกี่ยวข้อง ในการตั้งค่าที่มีผู้ให้บริการเพียงรายเดียว

พื้นที่จัดเก็บ (ตำแหน่งของโทเค็น)

ข้อมูลลับจะอยู่แยกตามเอเจนต์ โดยใช้ชื่อเชิงตรรกะ auth-profiles.json เป็นคีย์ (ที่เก็บ เบื้องหลังคือฐานข้อมูล SQLite ของเอเจนต์ ส่วนชื่อ JSON ยังคงไว้เพื่อ ความเข้ากันได้และการแสดงผลในเครื่องมือ):

  • โปรไฟล์การตรวจสอบสิทธิ์ (OAuth + คีย์ API + การอ้างอิงระดับค่าที่เลือกใช้ได้): ~/.openclaw/agents/<agentId>/agent/auth-profiles.json
  • ไฟล์ความเข้ากันได้แบบเดิม: ~/.openclaw/agents/<agentId>/agent/auth.json (รายการ api_key แบบคงที่จะถูกล้างออกเมื่อตรวจพบ)

ไฟล์เดิมสำหรับนำเข้าเท่านั้น (ยังรองรับอยู่ แต่ไม่ใช่ที่เก็บหลัก):

  • ~/.openclaw/credentials/oauth.json (นำเข้าสู่ที่เก็บโปรไฟล์การตรวจสอบสิทธิ์เมื่อใช้งานครั้งแรก)

รายการทั้งหมดข้างต้นยังคำนึงถึง $OPENCLAW_STATE_DIR (การแทนค่าไดเรกทอรีสถานะ) ด้วย ข้อมูลอ้างอิงฉบับเต็ม: /gateway/configuration-reference#auth-storage

สำหรับการอ้างอิงข้อมูลลับแบบคงที่และพฤติกรรมการเปิดใช้งานสแนปช็อตของรันไทม์ โปรดดู การจัดการข้อมูลลับ

เมื่อเอเจนต์รองไม่มีโปรไฟล์การตรวจสอบสิทธิ์ภายในเครื่อง OpenClaw จะใช้การสืบทอดแบบอ่านทะลุ จากที่เก็บของเอเจนต์เริ่มต้น/หลัก โดยจะไม่โคลนที่เก็บของเอเจนต์หลัก เมื่ออ่าน โทเค็นรีเฟรช OAuth มีความละเอียดอ่อนเป็นพิเศษ โดยปกติ ขั้นตอนการคัดลอกจะข้ามโทเค็นเหล่านี้เป็นค่าเริ่มต้น เนื่องจากผู้ให้บริการบางรายหมุนเวียนหรือทำให้ โทเค็นรีเฟรชใช้การไม่ได้หลังใช้งาน ให้กำหนดค่าการเข้าสู่ระบบ OAuth แยกต่างหากสำหรับเอเจนต์ เมื่อต้องใช้บัญชีที่เป็นอิสระ

การนำ Anthropic Claude CLI มาใช้ซ้ำ

OpenClaw รองรับการนำ Anthropic Claude CLI มาใช้ซ้ำและ claude -p เป็นเส้นทาง การตรวจสอบสิทธิ์ที่ได้รับอนุญาต หากมีการเข้าสู่ระบบ Claude ภายในเครื่องบนโฮสต์อยู่แล้ว ขั้นตอนเริ่มต้นใช้งาน/กำหนดค่าสามารถนำมาใช้ซ้ำได้โดยตรง setup-token ของ Anthropic ยังคง เป็นเส้นทางการตรวจสอบสิทธิ์ด้วยโทเค็นที่รองรับ แต่ OpenClaw จะเลือกการนำ Claude CLI มาใช้ซ้ำก่อนเมื่อพร้อมใช้งาน

การแลกเปลี่ยน OAuth (วิธีการเข้าสู่ระบบ)

ขั้นตอนการเข้าสู่ระบบแบบโต้ตอบของ OpenClaw ถูกนำไปใช้ใน openclaw/plugin-sdk/llm.ts และเชื่อมต่อกับวิซาร์ด/คำสั่งต่างๆ

setup-token ของ Anthropic

รูปแบบขั้นตอน:

  1. สร้างโทเค็นโดยเรียกใช้ claude setup-token บนเครื่องใดก็ได้ที่มี Claude Code จากนั้นเริ่มใช้ setup-token ของ Anthropic หรือวางโทเค็นจาก OpenClaw
  2. OpenClaw จัดเก็บข้อมูลประจำตัว Anthropic ที่ได้ไว้ในโปรไฟล์การตรวจสอบสิทธิ์
  3. การเลือกโมเดลยังคงอยู่ที่ anthropic/...
  4. โปรไฟล์การตรวจสอบสิทธิ์ Anthropic ที่มีอยู่ยังคงพร้อมให้ใช้เพื่อย้อนกลับ/ควบคุมลำดับ

OpenAI Codex (ChatGPT OAuth)

OAuth ของ OpenAI Codex รองรับการใช้งานภายนอก Codex CLI อย่างชัดเจน รวมถึงเวิร์กโฟลว์ OpenClaw

คำสั่งเข้าสู่ระบบใช้รหัสผู้ให้บริการ OpenAI มาตรฐาน:

bash
openclaw models auth login --provider openai

ใช้ --profile-id openai:<name> สำหรับบัญชี ChatGPT/Codex OAuth หลายบัญชีใน เอเจนต์เดียว อย่าใช้ openai-codex:<name> สำหรับโปรไฟล์ใหม่ Doctor จะย้าย คำนำหน้าเก่านั้นไปยังรหัสโปรไฟล์ openai:* ที่ไม่ชนกัน ให้เรียกใช้ openclaw models auth list --provider openai หลังการซ่อมแซม ก่อนคัดลอก รหัสโปรไฟล์ไปยัง auth.order หรือ /model ...@<profileId>

รูปแบบขั้นตอน (PKCE):

  1. สร้างตัวตรวจสอบ/คำท้า PKCE และ state แบบสุ่ม
  2. เปิด https://auth.openai.com/oauth/authorize?... (ขอบเขต openid profile email offline_access)
  3. พยายามรับคอลแบ็กที่ http://localhost:1455/auth/callback (โฮสต์ คอลแบ็กมีค่าเริ่มต้นเป็น localhost และยอมรับเฉพาะโฮสต์ลูปแบ็กเท่านั้น แทนค่าได้ด้วย OPENCLAW_OAUTH_CALLBACK_HOST)
  4. หากวางโค้ดได้ก่อนที่คอลแบ็กจะมาถึง (หรือกำลังใช้งาน จากระยะไกล/ไม่มีส่วนแสดงผลและคอลแบ็กไม่สามารถผูกพอร์ตได้) ให้วาง URL/โค้ดเปลี่ยนเส้นทาง แทน การวางด้วยตนเองจะแข่งกับคอลแบ็กของเบราว์เซอร์ และรายการใดเสร็จก่อน จะเป็นฝ่ายชนะ
  5. แลกเปลี่ยนโค้ดที่ https://auth.openai.com/oauth/token
  6. แยก accountId จากโทเค็นการเข้าถึงและจัดเก็บ { access, refresh, expires, accountId }

เส้นทางวิซาร์ดคือ openclaw onboard → ตัวเลือกการตรวจสอบสิทธิ์ openai

การรีเฟรช + การหมดอายุ

โปรไฟล์จัดเก็บการประทับเวลา expires ขณะรันไทม์:

  • หาก expires อยู่ในอนาคต ให้ใช้โทเค็นการเข้าถึงที่จัดเก็บไว้
  • หากหมดอายุ ให้รีเฟรช (ภายใต้การล็อกไฟล์) และเขียนทับข้อมูลประจำตัวที่จัดเก็บไว้
  • หากเอเจนต์รองอ่านโปรไฟล์ OAuth ของเอเจนต์หลักที่สืบทอดมา การรีเฟรชจะเขียนกลับไปยังที่เก็บของเอเจนต์หลัก แทนการคัดลอกโทเค็นรีเฟรช ไปยังที่เก็บของเอเจนต์รอง
  • ระบบจะอ่านข้อมูลประจำตัว CLI ที่จัดการจากภายนอกอีกครั้ง (Claude CLI และการเริ่มต้น จาก Codex CLI แบบจำกัด โปรดดู ปลายทางรวมโทเค็น) แทนการใช้ โทเค็นรีเฟรชที่คัดลอกมา หากการรีเฟรชที่มีการจัดการล้มเหลว OpenClaw จะรายงานโปรไฟล์ที่ได้รับผลกระทบเพื่อให้ตรวจสอบสิทธิ์ใหม่ แทนการส่งคืน ข้อมูลโทเค็นจาก CLI ภายนอก

ขั้นตอนการรีเฟรชเป็นแบบอัตโนมัติ โดยทั่วไปจึงไม่จำเป็นต้องจัดการโทเค็นด้วยตนเอง

หลายบัญชี (โปรไฟล์) + การกำหนดเส้นทาง

มีสองรูปแบบ:

1) แนะนำ: แยกเอเจนต์

หากต้องการให้ "ส่วนตัว" และ "งาน" ไม่โต้ตอบกันเลย ให้ใช้เอเจนต์ที่แยกจากกัน (แยกเซสชัน + ข้อมูลประจำตัว + พื้นที่ทำงาน):

bash
openclaw agents add workopenclaw agents add personal

จากนั้นกำหนดค่าการตรวจสอบสิทธิ์แยกตามเอเจนต์ (วิซาร์ด) และกำหนดเส้นทางแชตไปยังเอเจนต์ที่ถูกต้อง

2) ขั้นสูง: หลายโปรไฟล์ในเอเจนต์เดียว

ที่เก็บโปรไฟล์การตรวจสอบสิทธิ์รองรับรหัสโปรไฟล์หลายรายการสำหรับผู้ให้บริการเดียวกัน เลือกว่าจะใช้รายการใด:

  • ทั่วทั้งระบบผ่านการจัดลำดับในการกำหนดค่า (auth.order)
  • แยกตามเซสชันผ่าน /model ...@<profileId>

ตัวอย่าง (การแทนค่าระดับเซสชัน):

  • /model Opus@anthropic:work

แสดงรหัสโปรไฟล์ที่มีอยู่ด้วย:

bash
openclaw models auth list --provider <id>

เอกสารที่เกี่ยวข้อง:

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page