WeChat.Refresher.Default (wechat v0.7.1) View Source
token 刷新器
本模块为默认的刷新器
需要修改为自定义的刷新器,可以这样配置:
config :wechat, :refresher, YourRefresher修改刷新器的配置,支持多种配置方式:
方式1
config :wechat, :refresh_settings, [ClientA, ClientB, ClientC]以上配置会自动为三个 Client 定时刷新 token ,默认会在 token 过期前 30 分钟刷新,token 刷新失败的重试间隔为 1 分钟,
默认的 token 刷新列表为:WeChat.Refresher.DefaultSettings.get_refresh_options_by_client/1 输出的结果
方式2
config :wechat, :refresh_settings, [{ClientA, client_setting}, ClientB, ClientC]
# or
config :wechat, :refresh_settings, %{ClientA => client_setting, ClientB => client_setting, ClientC => client_setting}client_setting 配置说明见:client_setting/0
为了适应 Storage 在 Refresher 启动之后才启动,可以开启延时启动刷新:
config :wechat, WeChat.Refresher.Default, wait_for_signal: true当所有的 Storage 都已经完成,可以即可通过 WeChat.Refresher.Default.start_monitor/0 方法刷新 token
不配置默认为立即启动刷新
Link to this section Summary
Functions
Returns a specification to start this module under a supervisor.
Link to this section Types
Specs
client_setting() :: %{
optional(:refresh_before_expired) => refresh_before_expired(),
optional(:refresh_retry_interval) => refresh_retry_interval(),
optional(:refresh_options) =>
WeChat.Refresher.DefaultSettings.refresh_options()
}
option
:refresh_before_expired: 在token过去前多少秒刷新,单位:秒,可选, 为保证hub&hub_client刷新正常,请保持两者的时间一致;server_role=hub_client时, 默认值:1800 + 30秒; 其余角色默认值:1800秒:refresh_retry_interval: 刷新token失败的重试间隔,单位:秒,可选,默认值:60000秒:refresh_options: 刷新token配置,可选,默认值:WeChat.Refresher.DefaultSettings.get_refresh_options_by_client/1的输出结果
Specs
client_settings() :: [WeChat.client()] | %{required(WeChat.client()) => client_setting()}
Specs
refresh_before_expired() :: non_neg_integer()
在 token 过去前多少秒刷新,单位:秒
如果server_role = hub, hub server 的值请大于 hub client
Specs
refresh_retry_interval() :: non_neg_integer()
刷新 token 失败的重试间隔,单位:秒
Specs
state() :: %{
:wait_for_signal => boolean(),
:clients => [WeChat.client()],
required(WeChat.client()) => client_setting()
}
Link to this section Functions
Specs
add(WeChat.client(), client_setting()) :: :ok
Returns a specification to start this module under a supervisor.
See Supervisor.
Specs
refresh(WeChat.client()) :: :ok | :nofound
Specs
refresh_key( WeChat.client(), WeChat.Storage.Adapter.store_id(), WeChat.Storage.Adapter.store_key(), WeChat.Storage.Adapter.value(), expires :: integer() ) :: :ok
Specs
remove(WeChat.client()) :: :ok
Specs
start_link(client_settings()) :: GenServer.on_start()
Specs
start_monitor() :: :ok