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)
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
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
~/.openclaw/credentials/oauth.json(birinchi foydalanishdaauth-profiles.jsonga import qilinadi)
$OPENCLAW_STATE_DIR ni ham hurmat qiladi (state dir override). To‘liq ma’lumotnoma: /gateway/configuration
Anthropic setup-token (obuna autentifikatsiyasi)
Istalgan mashinadaclaude setup-token ni ishga tushiring, so‘ng uni OpenClaw’ga joylashtiring:
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)
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
openclaw onboard → auth tanlovi openai-codex.
Refresh + muddati tugashi
Profillarexpires 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
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):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
/model Opus@anthropic:work
openclaw channels list --json(auth[]ni ko‘rsatadi)
- /concepts/model-failover (rotatsiya + cooldown qoidalari)
- /tools/slash-commands (buyruqlar yuzasi)