You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
48 lines
1.1 KiB
package wechat_auth
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
type (
|
|
ISys interface {
|
|
Auth(ctx context.Context, idToken string) (info *WeChatUserInfoResponse, err error)
|
|
}
|
|
WeChatTokenResponse struct {
|
|
AccessToken string `json:"access_token"`
|
|
ExpiresIn int `json:"expires_in"`
|
|
RefreshToken string `json:"refresh_token"`
|
|
OpenID string `json:"openid"`
|
|
Scope string `json:"scope"`
|
|
WeChatError // 内嵌错误结构
|
|
}
|
|
|
|
WeChatUserInfoResponse struct {
|
|
OpenID string `json:"openid"`
|
|
Nickname string `json:"nickname"`
|
|
HeadImgURL string `json:"headimgurl"`
|
|
UnionID string `json:"unionid"`
|
|
WeChatError
|
|
}
|
|
|
|
WeChatError struct {
|
|
ErrCode int `json:"errcode"`
|
|
ErrMsg string `json:"errmsg"`
|
|
}
|
|
)
|
|
|
|
var defsys ISys
|
|
|
|
func OnInit(config map[string]interface{}, option ...Option) (err error) {
|
|
defsys, err = newSys(newOptions(config, option...))
|
|
return
|
|
}
|
|
|
|
func NewSys(option ...Option) (sys ISys, err error) {
|
|
sys, err = newSys(newOptionsByOption(option...))
|
|
return
|
|
}
|
|
|
|
func Auth(ctx context.Context, idToken string) (info *WeChatUserInfoResponse, err error) {
|
|
return defsys.Auth(ctx, idToken)
|
|
}
|
|
|