OAuth 2.0: umumiy ma'lumot
OAuth 2.0 ilovangizga Bito API'ga mijoz akkaunti nomidan murojaat qilish imkonini beradi. Bito bergan tokenlar akkaunt kontekstini olib yuradi, shuning uchun har bir murojaat avtomatik ravishda o'sha mijozning ma'lumoti bilan cheklanadi — akkaunt identifikatorini o'zingiz yuborishingiz shart emas.
TIP
Agar siz faqat bitta akkaunt — o'zingizniki — bilan ishlasangiz, OAuth kerak emas. api-key sarlavhasidan foydalaning, qarang: API bilan ishlash.
Kod olishning ikki yo'li
Avtorizatsiya kodini olishning ikki yo'li bor. Ikkalasi ham bir xil token endpointiga olib boradi va bir xil access_token + refresh_token juftligini beradi.
| Nima yaratyapsiz | Oqim | Kim boshlaydi |
|---|---|---|
| Mijozlar Bito ichidan o'rnatadigan marketplace integratsiyasi | O'rnatish oqimi (Flow A) | Mijoz, Bito panelida |
| O'z mahsulotingiz, unda mijoz sizning interfeysingizda "Bito'ga ulanish"ni bosadi | Ulanish oqimi (Flow B) | Sizning ilovangiz |
| Sizni allaqachon o'rnatgan mijoz uchun foydalanuvchisiz fon vazifasi | Client credentials | Sizning serveringiz |
Flow A Flow B
(Bito boshlaydi) (siz boshlaysiz)
Mijoz Bito'da "O'rnatish"ni Mijoz ilovangizda "Ulanish"ni
bosadi bosadi
| |
v v
Bito redirect_uri'ingizga kodni Siz id.bito.uz'ga yo'naltirasiz,
POST qiladi mijoz kiradi, Bito uni ?code= bilan
| qaytaradi
| |
+-----------------+-----------------+
|
v
POST /auth/oauth/token
(grant_type=authorization_code)
|
v
access_token + refresh_tokenHuquqlar (scopes)
Scope mijoz sizga qancha huquq berishini belgilaydi.
| Scope | Qiymat | Tavsif |
|---|---|---|
| Admin | admin | Barcha resurslarga to'liq administrativ kirish |
| Read | read | Faqat o'qish |
| Write | write | Yaratish va o'zgartirish |
| Delete | delete | O'chirish |
Ruxsatlar: haqiqiy nazorat
Tokendagi scope'ning o'zi so'rovni cheklamaydi. Integration API'ga har bir so'rov — OAuth tokeni bilanmi yoki api-key bilanmi — quyidagilar bo'yicha tekshiriladi:
required_permissions→granted_permissions. Ilovangiz Integration API'da foydalanadigan ERP ruxsatlarini (required_permissions, rollardagi kalitlar bilan bir xil) e'lon qiladi. Mijoz o'rnatishdan oldin aynan shu ro'yxatni ko'radi, o'rnatish esa uning nusxasini integratsiyagagranted_permissionssifatida yozadi. Har bir so'rov shu nusxa bo'yicha tekshiriladi: ruxsat bo'lmasa, so'rov rad etiladi. Keyinroqrequired_permissionsni o'zgartirsangiz, bu allaqachon o'rnatilgan akkauntga faqat u qayta o'rnatganda ta'sir qiladi. Bo'sh ro'yxat — barcha ruxsatlar.available_scopes. Mijozingizdaavailable_scopesberilgan bo'lsa, so'rov amaliga mos scope (read,writeyokidelete;adminhammasini qamraydi) shu ro'yxatda bo'lishi kerak, aks holda so'rov rad etiladi. Ro'yxat bo'sh bo'lsa, bu tekshiruv o'tkazib yuboriladi.
Eng tor ishlaydigan required_permissions ro'yxatini e'lon qiling — mijoz o'rnatishdan oldin nimaga rozilik berayotganini aynan shundan ko'radi.
Endpointlar
| Metod | Yo'l | Avtorizatsiya | Vazifa |
|---|---|---|---|
POST | /auth/oauth/auth | Yo'q | Client credentials |
POST | /auth/oauth/token | Yo'q | Kodni almashtirish yoki yangilash |
POST | /auth/get-one-time-token | Bearer (foydalanuvchi sessiyasi) | Bir martalik token |
Host: prodda https://api.bito.uz, devda https://api.systematicdev.uz.