پرش به محتویات

احراز هویت

لازم نیست خودتان با توکن‌ها کار کنید. کلینت در اولین درخواست خصوصی این کارها را انجام می‌دهد:

  1. POST /api/v1/usr/authenticate/ با api_key و secret_key یک توکن access (حدود ۱۵ دقیقه) و یک توکن refresh (حدود ۳۰ روز) برمی‌گرداند.
  2. هر درخواست خصوصی هدر Authorization: Bearer <access> را می‌فرستد.
  3. حدود دو دقیقه پیش از انقضای توکن access، کلاینت با POST /api/v1/usr/refresh_token/ توکن تازه می‌گیرد.
  4. اگر تمدید شکست بخورد یا توکن refresh منقضی شده باشد، کلاینت دوباره احراز هویت می‌کند.
  5. اگر سرور 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()، لاگ‌ها یا پیام خطاها دیده نمی‌شوند.