Ana içeriğe geç

Token'lar ve depolar

Token dataclass

Token(
    access_token: str,
    token_type: str = "Bearer",
    expires_at: float | None = None,
    refresh_token: str | None = None,
    refresh_expires_at: float | None = None,
    scope: str = "",
)

Identity sunucusundan alınan bir OAuth2 token'ı.

Attributes:

Name Type Description
access_token str

API çağrılarında kullanılan token.

expires_at float | None

Geçerliliğin bittiği an (epoch saniyesi); bilinmiyorsa None.

refresh_token str | None

Yalnızca authorization code akışında (offline_access ile) gelir.

refresh_expires_at float | None

Refresh token'ın tahmini bitiş anı (alındıktan 24 saat sonra).

scope str

Verilen kapsamlar (boşlukla ayrılmış).

from_response classmethod

from_response(
    data: Mapping[str, Any], *, now: float | None = None
) -> Token

Token uç noktasının JSON yanıtından Token üretir.

is_expired

is_expired(
    *,
    leeway: float = DEFAULT_LEEWAY,
    now: float | None = None,
) -> bool

Access token'ın süresi dolmuş (ya da leeway saniye içinde dolacak) mı?

can_refresh

can_refresh(*, now: float | None = None) -> bool

Kullanılabilir bir refresh token var mı?

has_scope

has_scope(scope: str | Iterable[str]) -> bool

Token istenen kapsam(lar)ın hepsini içeriyor mu? Kapsamı bilinmeyen token True döner.

TokenStore

Token'ların saklandığı yer.

Kendi deponuzu (Redis, veritabanı...) yazmak için bu üç metodu sağlamanız yeterli. Anahtarlar "client:<kapsamlar>" (uygulama token'ları) ve "user:<kullanıcı>" (müşteri token'ları) biçimindedir. Metotlar asenkron istemciden de senkron çağrılır; bu yüzden hızlı olmaları gerekir.

MemoryTokenStore

MemoryTokenStore()

Token'ları yalnızca süreç belleğinde tutar (varsayılan).

FileTokenStore

FileTokenStore(path: str | PathLike[str])

Token'ları bir JSON dosyasında saklar; betikler ve CLI araçları için uygundur.

Dosya yalnızca sahibinin okuyabileceği izinlerle (0600) ve atomik olarak yazılır. İçinde access/refresh token bulunduğu için bu dosyayı sürüm kontrolüne eklemeyin.