elixir_wechat v0.1.0 WeChat.Adapter.Storage.ComponentHub behaviour

The storage adapter specification for WeChat component application.

Since we need to storage(cache) some key data(e.g. access_token/component_access_token) for invoking WeChat APIs, this module is used for customizing the persistence when use this library in a :hub side of WeChat component application.

Notice: In the :hub scenario, we need to implement the completed functions to maintain the persistence.

Writing custom storage adapter

Example for WeChat 3rd-party Platform application

defmodule MyComponentApp.Storage.Hub do
  @behaviour WeChat.Adapter.Storage.ComponentHub

  @impl true
  def get_secret_key(appid) do
    secret_key = "Get component application secret_key from your persistence..."
    secret_key
  end

  @impl true
  def get_access_token(appid, authorizer_appid) do
    access_token = "Get authorizer's access_token for WeChat component application from your persistence..."
    access_token
  end

  @impl true
  def save_access_token(appid, authorizer_appid, access_token, refresh_token) do
    # Save authorizer's access_token and its refresh_token to your persistence
  end

  @impl true
  def delete_access_token(appid, authorizer_appid, access_token) do
    # Delete authorizer's access_token for WeChat component application from your persistence
  end

  @impl true
  def get_component_access_token(appid) do
    access_token = "Get component access_token for WeChat component application from your persistence..."
    access_token
  end

  @impl true
  def save_component_access_token(appid, component_access_token) do
    # Save access_token of WeChat component application
  end

  @impl true
  def delete_component_access_token(appid, component_access_token) do
    # Delete access_token of WeChat component application
  end

  @impl true
  def get_component_verify_ticket(appid) do
    component_verify_ticket = "Get component_verify_ticket for WeChat component application from your persistence..."
    component_verify_ticket
  end

  @impl true
  def save_component_verify_ticket(appid, component_verify_ticket) do
    # Save component_verify_ticket to your persistence
  end
end

Link to this section Summary

Callbacks

Delete authorizer's access_token for WeChat component application.

Delete access_token of WeChat component application.

Get authorizer's access_token for WeChat component application.

Get access_token of WeChat component application.

Get component_verify_ticket of WeChat component application.

Get secret_key of WeChat component application.

Save authorizer's access_token for WeChat component application.

Save access_token of WeChat component application.

Save component_verify_ticket of WeChat component application.

Link to this section Callbacks

Link to this callback

delete_access_token(appid, authorizer_appid, access_token)
delete_access_token(
  appid :: String.t(),
  authorizer_appid :: String.t(),
  access_token :: String.t()
) :: term()

Delete authorizer's access_token for WeChat component application.

Example

delete_access_token(
  appid,
  authorizer_appid,
  access_token
)
Link to this callback

delete_component_access_token(appid, component_access_token)
delete_component_access_token(
  appid :: String.t(),
  component_access_token :: String.t()
) :: term()

Delete access_token of WeChat component application.

Example

delete_component_access_token(
  appid,
  component_access_token
)
Link to this callback

get_access_token(appid, authorizer_appid)
get_access_token(appid :: String.t(), authorizer_appid :: String.t()) ::
  %WeChat.Token{access_token: term(), refresh_token: term()}
  | nil
  | %WeChat.Error{
      __exception__: term(),
      errcode: term(),
      message: term(),
      reason: term()
    }

Get authorizer's access_token for WeChat component application.

Example

get_access_token(appid, authorizer_appid)
Link to this callback

get_component_access_token(appid)
get_component_access_token(appid :: String.t()) ::
  %WeChat.Token{access_token: term(), refresh_token: term()}
  | nil
  | %WeChat.Error{
      __exception__: term(),
      errcode: term(),
      message: term(),
      reason: term()
    }

Get access_token of WeChat component application.

Example

get_component_access_token(appid)
Link to this callback

get_component_verify_ticket(appid)
get_component_verify_ticket(appid :: String.t()) ::
  String.t()
  | nil
  | %WeChat.Error{
      __exception__: term(),
      errcode: term(),
      message: term(),
      reason: term()
    }

Get component_verify_ticket of WeChat component application.

Link to this callback

get_secret_key(appid)
get_secret_key(appid :: String.t()) ::
  String.t()
  | nil
  | %WeChat.Error{
      __exception__: term(),
      errcode: term(),
      message: term(),
      reason: term()
    }

Get secret_key of WeChat component application.

Link to this callback

save_access_token(appid, authorizer_appid, access_token, refresh_token)
save_access_token(
  appid :: String.t(),
  authorizer_appid :: String.t(),
  access_token :: String.t(),
  refresh_token :: String.t()
) :: term()

Save authorizer's access_token for WeChat component application.

Example

save_access_token(
  appid,
  authorizer_appid,
  access_token,
  refresh_token,
)
Link to this callback

save_component_access_token(appid, component_access_token)
save_component_access_token(
  appid :: String.t(),
  component_access_token :: String.t()
) :: term()

Save access_token of WeChat component application.

Example

save_component_access_token(
  appid,
  component_access_token
)
Link to this callback

save_component_verify_ticket(appid, component_verify_ticket)
save_component_verify_ticket(
  appid :: String.t(),
  component_verify_ticket :: String.t()
) :: term()

Save component_verify_ticket of WeChat component application.

Example

save_component_verify_ticket(appid, component_verify_ticket)