Documentation ¶
Overview ¶
微信公众平台开发 SDK
See: https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html
Index ¶
- Variables
- func GetAccessToken(ctx *OffiAccount) (accessToken string, err error)
- func NoticeAccessTokenExpire(ctx *OffiAccount) (err error)
- type AccessToken
- type Client
- type Config
- type GetAccessTokenFunc
- type NoticeAccessTokenExpireFunc
- type OffiAccount
- func (offiAccount *OffiAccount) SetAccessTokenCacheDriver(driver cachego.Cache)
- func (offiAccount *OffiAccount) SetGetAccessTokenHandler(f GetAccessTokenFunc)
- func (offiAccount *OffiAccount) SetLogger(logger *log.Logger)
- func (offiAccount *OffiAccount) SetNoticeAccessTokenExpireHandler(f NoticeAccessTokenExpireFunc)
- type Server
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ( WXServerUrl = "https://api.weixin.qq.com" // 微信 api 服务器地址 UserAgent = "fastwego/offiaccount" ErrorAccessTokenExpire = errors.New("access token expire") )
Functions ¶
func GetAccessToken ¶
func GetAccessToken(ctx *OffiAccount) (accessToken string, err error)
从 公众号实例 的 AccessToken 管理器 获取 access_token
如果没有 access_token 或者 已过期,那么刷新
获得新的 access_token 后 过期时间设置为 0.9 * expiresIn 提供一定冗余
func NoticeAccessTokenExpire ¶
func NoticeAccessTokenExpire(ctx *OffiAccount) (err error)
NoticeAccessTokenExpire 只需将本地存储的 access_token 删除,即完成了 access_token 已过期的 主动通知
retry 请求的时候,会发现本地没有 access_token ,从而触发refresh
Types ¶
type AccessToken ¶
type AccessToken struct { Cache cachego.Cache GetAccessTokenHandler GetAccessTokenFunc NoticeAccessTokenExpireHandler NoticeAccessTokenExpireFunc }
AccessToken 管理器 处理缓存 和 刷新 逻辑
type Client ¶
type Client struct {
Ctx *OffiAccount
}
HttpClient 用于向公众号接口发送请求
type GetAccessTokenFunc ¶
type GetAccessTokenFunc func(ctx *OffiAccount) (accessToken string, err error)
GetAccessTokenFunc 获取 access_token 方法接口
type NoticeAccessTokenExpireFunc ¶
type NoticeAccessTokenExpireFunc func(ctx *OffiAccount) (err error)
NoticeAccessTokenExpireFunc 通知中控 刷新 access_token
type OffiAccount ¶
type OffiAccount struct { Config Config AccessToken AccessToken Client Client Server Server Logger *log.Logger }
OffiAccount 公众号实例
func (*OffiAccount) SetAccessTokenCacheDriver ¶
func (offiAccount *OffiAccount) SetAccessTokenCacheDriver(driver cachego.Cache)
SetAccessTokenCacheDriver 设置 AccessToken 缓存器 默认为文件缓存:目录 os.TempDir()
驱动接口类型 为 cachego.Cache
Example ¶
package main import ( "os" "github.com/faabiosr/cachego/file" "github.com/faabiosr/cachego/sync" "github.com/fastwego/offiaccount" ) func main() { var App *offiaccount.OffiAccount // 使用内存 App.SetAccessTokenCacheDriver(sync.New()) // 使用指定目录下的 文件 App.SetAccessTokenCacheDriver(file.New(os.TempDir())) // 更多驱动 请查看 https://github.com/faabiosr/cachego }
Output:
func (*OffiAccount) SetGetAccessTokenHandler ¶
func (offiAccount *OffiAccount) SetGetAccessTokenHandler(f GetAccessTokenFunc)
SetGetAccessTokenHandler 设置 AccessToken 获取方法。默认 从本地缓存获取(过期从微信接口刷新)
如果有多实例服务,可以设置为 Redis 或 RPC 等中控服务器 获取 就可以避免 AccessToken 刷新冲突
Example ¶
package main import ( "github.com/fastwego/offiaccount" "github.com/garyburd/redigo/redis" ) func main() { var Ctx *offiaccount.OffiAccount conn, _ := redis.Dial("tcp", "127.0.0.1:6379") _, _ = conn.Do("AUTH", "PASSWORD") // 从远程 Redis 服务器 获取 AccessToken Ctx.SetGetAccessTokenHandler(func(ctx *offiaccount.OffiAccount) (accessToken string, err error) { accessToken, _ = redis.String(conn.Do("GET", "access_token:"+ctx.Config.Appid)) return }) }
Output:
func (*OffiAccount) SetLogger ¶
func (offiAccount *OffiAccount) SetLogger(logger *log.Logger)
SetLogger 日志记录 默认输出到 os.Stdout
可以新建 logger 输出到指定文件
如果不想开启日志,可以 SetLogger(nil)
Example ¶
package main import ( "log" "os" "github.com/fastwego/offiaccount" ) func main() { var Ctx *offiaccount.OffiAccount // 输出日志到控制台 Ctx.SetLogger(log.New(os.Stdout, "[offiaccount]", log.LstdFlags)) // 记录日志到指定文件 logFile, _ := os.OpenFile("/path/to/file", os.O_WRONLY, 0644) Ctx.SetLogger(log.New(logFile, "[offiaccount]", log.LstdFlags)) // 关闭日志 Ctx.SetLogger(nil) }
Output:
func (*OffiAccount) SetNoticeAccessTokenExpireHandler ¶
func (offiAccount *OffiAccount) SetNoticeAccessTokenExpireHandler(f NoticeAccessTokenExpireFunc)
SetNoticeAccessTokenExpireHandler 设置 AccessToken 过期 通知
框架提供的默认机制是 删除本地缓存的 access_token,那么 retry 的时候 会触发 刷新
如果有多实例服务,可以设置为 通知 中控服务器 去刷新
Directories ¶
Path | Synopsis |
---|---|
apis
|
|
account
Package account 账号管理
|
Package account 账号管理 |
ai
Package ai 智能接口
|
Package ai 智能接口 |
card
Package card 微信卡券
|
Package card 微信卡券 |
card/giftcard
Package giftcard 微信礼品卡
|
Package giftcard 微信礼品卡 |
card/membercard
Package membercard 会员卡专区
|
Package membercard 会员卡专区 |
card/submerchant
Package submerchant 票券-第三方开发者模式
|
Package submerchant 票券-第三方开发者模式 |
card/ticket
Package ticket 特殊票券
|
Package ticket 特殊票券 |
comment
Package comment 图文消息留言管理
|
Package comment 图文消息留言管理 |
cps
Package cps 返佣商品
|
Package cps 返佣商品 |
customservice
Package customservice 客服消息/功能
|
Package customservice 客服消息/功能 |
datacube
Package datacube 数据统计
|
Package datacube 数据统计 |
guide/buyer
Package buyer 服务号对话能力(原微信导购助手)/客户管理
|
Package buyer 服务号对话能力(原微信导购助手)/客户管理 |
guide/guide
Package guide 服务号对话能力(原微信导购助手)/顾问管理
|
Package guide 服务号对话能力(原微信导购助手)/顾问管理 |
guide/job
Package job 服务号对话能力(原微信导购助手)/群发任务
|
Package job 服务号对话能力(原微信导购助手)/群发任务 |
guide/material
Package material 服务号对话能力(原微信导购助手)/素材管理
|
Package material 服务号对话能力(原微信导购助手)/素材管理 |
guide/tag
Package tag 服务号对话能力(原微信导购助手)/标签管理
|
Package tag 服务号对话能力(原微信导购助手)/标签管理 |
invoice
Package invoice 微信发票
|
Package invoice 微信发票 |
marketcode
Package marketcode 一物一码
|
Package marketcode 一物一码 |
material
Package material 素材管理
|
Package material 素材管理 |
menu
Package menu 自定义菜单
|
Package menu 自定义菜单 |
message
Package message 消息管理
|
Package message 消息管理 |
message/mass
Package mass 群发消息
|
Package mass 群发消息 |
message/template
Package template 模板消息
|
Package template 模板消息 |
nontax
Package nontax 非税票据/缴费
|
Package nontax 非税票据/缴费 |
nontax/vehicle
Package vehicle 非税车主平台
|
Package vehicle 非税车主平台 |
oauth
网页授权流程分为四步: 1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token(与基础支持中的access_token不同) 3、如果需要,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)
|
网页授权流程分为四步: 1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token(与基础支持中的access_token不同) 3、如果需要,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制) |
poi
Package poi 微信门店
|
Package poi 微信门店 |
poi/miniprogram
Package miniprogram 微信门店小程序
|
Package miniprogram 微信门店小程序 |
store
Package store 微信小店/功能接口
|
Package store 微信小店/功能接口 |
store/express
Package express 微信小店/邮费模板管理管理
|
Package express 微信小店/邮费模板管理管理 |
store/group
Package group 微信小店/分组管理
|
Package group 微信小店/分组管理 |
store/order
Package order 微信小店/订单管理
|
Package order 微信小店/订单管理 |
store/product
Package product 微信小店/商品管理
|
Package product 微信小店/商品管理 |
store/shelf
Package shelf 微信小店/货架管理
|
Package shelf 微信小店/货架管理 |
store/stock
Package stock 微信小店/库存管理
|
Package stock 微信小店/库存管理 |
user
Package user 用户管理
|
Package user 用户管理 |
user/tags
Package tags 用户标签管理
|
Package tags 用户标签管理 |
util
Package util 开发辅助
|
Package util 开发辅助 |
Package test 模拟微信服务器 测试
|
Package test 模拟微信服务器 测试 |
type
|
|