Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrTimeout = errors.New("签名超时") ErrInvalid = errors.New("无效签名") )
Functions ¶
This section is empty.
Types ¶
type Account ¶
type Account struct { AppID string AppSecret string SignatureKey string `default:""` // 为安全性,每个account可以独立一个签名key }
Account 表示一个公众号账号
type AccountProvider ¶
AccountProvider 公众号账号信息提供器
type Config ¶
type Config struct { Port int `default:"9527"` // 服务监听端口 EnableTLS bool `default:"false"` // 启用TLS TLSCertFile string `default:""` TLSKeyFile string `default:""` AccountsFile string `default:"./config/accounts.toml"` // 公众号账号配置文件 AheadTimeout int `default:"60"` // access token 和 jsapi ticket提前超时时间(单位: 秒); AllowIP []string // 允许访问的ip; 为空表示不限制 Signature struct { Key string // 默认签名密钥 Timeout int `default:"10"` // 签名超时时间(单位:秒) } Log struct { Level string `default:"debug"` // 日志记录级别 Path string `default:"./logs"` // 日志保存路径 RotationTime int `default:"24"` // 日志分割时间(单位:时) MaxAge int `default:"168"` // 日志最大保存时间(单位:时) } }
Config 配置
type Fetcher ¶
type Fetcher interface { FetchToken(appID, appSecret string) (*TokenRes, error) FetchTicket(accessToken string) (*TicketRes, error) }
Fetcher 是access token/jsapi ticket的请求器接口
type HMacSignatureValidator ¶
type HMacSignatureValidator struct {
// contains filtered or unexported fields
}
HMacSignatureValidator 基于HMac算法(md5)的签名验证组件
func NewHMacSignatureValidator ¶
func NewHMacSignatureValidator(key string, timeout int) *HMacSignatureValidator
NewHMacSignatureValidator 创建基于HMac算法的签名验证组件
type SignatureValidator ¶
type SignatureValidator interface {
Validate(appID string, timestamp int64, signature string) error
}
SignatureValidator 签名验证器接口
type StoreItem ¶
StoreItem 保存access token和jsapi ticket
func NewStoreItem ¶
NewStoreItem 创建存储项
func (*StoreItem) IsValidTicket ¶
IsValidTicket 判断jsapi ticket是否有效; ticket不存在或超时均为无效
func (*StoreItem) IsValidToken ¶
IsValidToken 判断access token是否有效; token不存在或超时均为无效
type StoreManager ¶
StoreManager 存储管理器; 用于管理各个公众号的access token和jsapi ticket
func NewStoreManager ¶
func NewStoreManager(provider AccountProvider, fetcher Fetcher, aheadTimeout int) *StoreManager
NewStoreManager 创建存储管理器
func (*StoreManager) LoadAccounts ¶
func (m *StoreManager) LoadAccounts() error
LoadAccounts 从配置加载公众号账号
func (*StoreManager) RemoveTicket ¶
func (m *StoreManager) RemoveTicket(appID string)
RemoveTicket 移除ticket
func (*StoreManager) RemoveToken ¶
func (m *StoreManager) RemoveToken(appID string)
RemoveToken 移除token
type TokenRes ¶
type TokenRes struct { APIRes AccessToken string `json:"access_token"` ExpiresIn int `json:"expires_in"` }
TokenRes 获取access token的接口的响应
type TomlAccountProvider ¶
type TomlAccountProvider struct {
// contains filtered or unexported fields
}
TomlAccountProvider 基于toml格式文件的公众号账号提供器
func NewTomlAccountProvider ¶
func NewTomlAccountProvider(filename string) *TomlAccountProvider
NewTomlAccountProvider 创建公众号账号提供器
func (*TomlAccountProvider) Obtain ¶
func (p *TomlAccountProvider) Obtain() ([]*Account, error)
Obtain 返回公众号账号列表
type WxFetcher ¶
type WxFetcher struct {
// contains filtered or unexported fields
}
WxFetcher 微信公众号请求器; 调用公众号API获取相应的token和ticket
func (*WxFetcher) FetchTicket ¶
FetchTicket 获取jsapi ticket