Skip to main content

TokenProvider

Trait TokenProvider 

Source
pub trait TokenProvider: Send + Sync {
    // Required methods
    fn access_token<'a>(
        &'a self,
    ) -> Pin<Box<dyn Future<Output = Result<Option<AccessToken>, AuthError>> + Send + 'a>>;
    fn refresh<'a>(
        &'a self,
        stale_token: Option<&'a str>,
        options: Option<RequestOptions>,
    ) -> Pin<Box<dyn Future<Output = Result<AccessToken, AuthError>> + Send + 'a>>;
}
Expand description

Token Provider 抽象:运行时经它获取与刷新访问令牌。

  • access_token:读取当前可用 token (无凭据时 None;实现方不得发起网络请求);
  • refresh:换取新 token 并持久化。

Required Methods§

Source

fn access_token<'a>( &'a self, ) -> Pin<Box<dyn Future<Output = Result<Option<AccessToken>, AuthError>> + Send + 'a>>

当前可用 token;无凭据时返回 None(不发起网络请求)。

Source

fn refresh<'a>( &'a self, stale_token: Option<&'a str>, options: Option<RequestOptions>, ) -> Pin<Box<dyn Future<Output = Result<AccessToken, AuthError>> + Send + 'a>>

刷新(换取)新 token 并持久化。

stale_token 为本次失败请求所用的失效 token;实现方应做并发刷新 合并——若存储中的 token 已不同于 stale_token,说明并发请求已完成 刷新,直接复用、不再重复换取。

options 为触发刷新的请求携带的请求选项(含 transport 默认叠加的 headers / timeout / extensions);实现方应让引导请求复用它们,保证 传输配置一致(并剥离其中已注入的失效 Authorization 头)。

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§