49. OAuth¶
- OpenClaw OAuth orqali “subscription auth”ni qo‘llab-quvvatlaydi (ayniqsa OpenAI Codex (ChatGPT OAuth)). Anthropic obunalari uchun setup-token oqimidan foydalaning. Ushbu sahifa quyidagilarni tushuntiradi:
- OAuth token exchange qanday ishlashi (PKCE)
- tokenlar qayerda saqlanishi (va nega)
- bir nechta akkauntlar bilan qanday ishlash (profilar + sessiya bo‘yicha override’lar)
OpenClaw, shuningdek, o‘z OAuth yoki API‑kalit oqimiga ega bo‘lgan provider pluginlarini ham qo‘llab-quvvatlaydi. Ularni quyidagicha ishga tushiring:
openclaw models auth login --provider <id>
Token sink (nega u mavjud)¶
OAuth providerlari odatda login/refresh oqimlari vaqtida yangi refresh token yaratadi. Ba’zi providerlar (yoki OAuth klientlari) bir xil foydalanuvchi/app uchun yangi token berilganda eski refresh tokenlarni bekor qilishi mumkin.
Amaliy alomat:
- siz OpenClaw orqali va Claude Code / Codex CLI orqali login qilasiz → ulardan biri keyinroq tasodifan “logout” bo‘lib qoladi
Buni kamaytirish uchun OpenClaw auth-profiles.json ni token sink sifatida ko‘radi:
- runtime credential’larni bitta joydan o‘qiydi
- biz bir nechta profilni saqlab, ularni deterministik tarzda yo‘naltira olamiz
Saqlash (tokenlar qayerda yashaydi)¶
Sirlar har bir agent bo‘yicha saqlanadi:
- Auth profillari (OAuth + API kalitlar):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - Runtime kesh (avtomatik boshqariladi; tahrirlamang):
~/.openclaw/agents/<agentId>/agent/auth.json
Legacy faqat-import fayli (hali ham qo‘llab-quvvatlanadi, lekin asosiy ombor emas):
~/.openclaw/credentials/oauth.json(birinchi foydalanishdaauth-profiles.jsonga import qilinadi)
Yuqoridagilarning barchasi $OPENCLAW_STATE_DIR ni ham hurmat qiladi (state dir override). To‘liq ma’lumotnoma: /gateway/configuration
Anthropic setup-token (obuna autentifikatsiyasi)¶
Istalgan mashinada claude setup-token ni ishga tushiring, so‘ng uni OpenClaw’ga joylashtiring:
openclaw models auth setup-token --provider anthropic
Agar tokenni boshqa joyda yaratgan bo‘lsangiz, uni qo‘lda joylashtiring:
openclaw models auth paste-token --provider anthropic
Tekshirish:
openclaw models status
OAuth exchange (login qanday ishlaydi)¶
OpenClaw’ning interaktiv login oqimlari @mariozechner/pi-ai da amalga oshirilgan va wizardlar/buyruqlarga ulangan.
Anthropic (Claude Pro/Max) sozlash tokeni¶
Oqim shakli:
claude setup-tokenni ishga tushiring- tokenni OpenClaw’ga joylashtiring
- token auth profili sifatida saqlang (refresh yo‘q)
Wizard yo‘li: openclaw onboard → auth tanlovi setup-token (Anthropic).
OpenAI Codex (ChatGPT OAuth)¶
Oqim shakli (PKCE):
- PKCE verifier/challenge + tasodifiy
stateyarating https://auth.openai.com/oauth/authorize?...ni ochinghttp://127.0.0.1:1455/auth/callbackda callback’ni ushlashga harakat qiling- agar callback bog‘lana olmasa (yoki siz remote/headless bo‘lsangiz), redirect URL/kodni joylashtiring
https://auth.openai.com/oauth/tokenda exchange qiling- access token’dan
accountIdni ajrating va{ access, refresh, expires, accountId }ni saqlang
Wizard yo‘li: openclaw onboard → auth tanlovi openai-codex.
Refresh + muddati tugashi¶
Profillar expires vaqt tamg‘asini saqlaydi.
Ish vaqtida:
expireskelajakda bo‘lsa → saqlangan access token’dan foydalaning- agar muddati tugagan bo‘lsa → yangilang (fayl lock ostida) va saqlangan credential’larni ustiga yozing
Refresh jarayoni avtomatik; odatda tokenlarni qo‘lda boshqarishingiz shart emas.
Bir nechta akkauntlar (profil) + marshrutlash¶
Ikki naqsh:
1. Afzal: alohida agentlar¶
Agar “personal” va “work” hech qachon o‘zaro aralashmasin desangiz, izolyatsiyalangan agentlardan foydalaning (alohida sessiyalar + credential’lar + workspace):
openclaw agents add work
openclaw agents add personal
So‘ng har bir agent uchun auth’ni sozlang (wizard orqali) va chatlarni mos agentga yo‘naltiring.
2. Kengaytirilgan: bitta agentda bir nechta profil¶
auth-profiles.json bir xil provider uchun bir nechta profile ID’larni qo‘llab-quvvatlaydi.
Qaysi profil ishlatilishini tanlang:
- global tarzda config tartibi orqali (
auth.order) - sessiya bo‘yicha
/model ...@<profileId>orqali
Misol (sessiya override):
/model Opus@anthropic:work
Qaysi profile ID’lar mavjudligini qanday ko‘rish mumkin:
openclaw channels list --json(auth[]ni ko‘rsatadi)
Bog‘liq hujjatlar:
- /concepts/model-failover (rotatsiya + cooldown qoidalari)
- /tools/slash-commands (buyruqlar yuzasi)