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 ภายในเครื่องบนโฮสต์อยู่แล้ว ขั้นตอนเริ่มต้นใช้งาน/กำหนดค่าสามารถนำมาใช้ซ้ำได้โดยตรง โทเค็นตั้งค่าของ Anthropic ยังคงเป็นแนวทางการยืนยันตัวตนด้วยโทเค็นที่รองรับ แต่ OpenClaw เลือกใช้ Claude CLI ซ้ำเป็นอันดับแรกเมื่อพร้อมใช้งาน

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

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

โทเค็นตั้งค่าของ Anthropic

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

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

OpenAI Codex (ChatGPT OAuth)

OpenAI Codex OAuth รองรับการใช้งานนอก 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 และยอมรับเฉพาะโฮสต์แบบ local loopback; เขียนทับได้ด้วย 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