احراز هویت¶
لازم نیست خودتان با توکنها کار کنید. کلینت در اولین درخواست خصوصی این کارها را انجام میدهد:
POST /api/v1/usr/authenticate/باapi_keyوsecret_keyیک توکن access (حدود ۱۵ دقیقه) و یک توکن refresh (حدود ۳۰ روز) برمیگرداند.- هر درخواست خصوصی هدر
Authorization: Bearer <access>را میفرستد. - حدود دو دقیقه پیش از انقضای توکن access، کلاینت با
POST /api/v1/usr/refresh_token/توکن تازه میگیرد. - اگر تمدید شکست بخورد یا توکن refresh منقضی شده باشد، کلاینت دوباره احراز هویت میکند.
- اگر سرور 401 بدهد (مثلاً توکن باطل شده)، کلاینت یک بار تمدید و یک بار درخواست را تکرار میکند.
حتی با چندین فراخوانی همزمان AsyncBitpin هم در هر لحظه فقط یک احراز هویت یا تمدید انجام میشود.
محدودیت ۳ بار در دقیقه¶
احراز هویت برای هر IP ۳ درخواست در دقیقه مجاز است. رباتی که زیاد ریاستارت میشود، یا چند ربات روی یک سرور، ممکن است به این سقف بخورند. توکنها را با کش فایلی به اشتراک بگذارید:
from bitpin_sdk import Bitpin, Config, FileTokenStore
client = Bitpin(Config.from_env(token_store=FileTokenStore()))
FileTokenStore فایل ~/.cache/bitpin-sdk/<id>.json را با دسترسی 0600 مینویسد. شناسه هش کلید API است، نه خود کلید. برای چند سرور، پروتکل TokenStore (load، save، clear) را روی Redis یا مشابه آن پیاده کنید.
فهرست IPهای مجاز¶
کلیدها و توکنهایشان فقط از IPهایی کار میکنند که برای کلید مجاز کردهاید. IP اشتباه خطای AuthenticationError میدهد.
خطاها¶
| مشکل | استثنا |
|---|---|
| کلید یا secret اشتباه، IP غیرمجاز | AuthenticationError |
| کلید تنظیم نشده ولی متد خصوصی صدا زده شده | AuthenticationError |
| حساب اجازه ندارد (مثلاً سطح احراز هویت) | PermissionDenied |
کلیدها و توکنها هیچوقت در repr()، لاگها یا پیام خطاها دیده نمیشوند.