同步操作将从 samoye/GoWeChat 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package miniProgramimport ("errors""fmt""gitee.com/yizhisamoye/GoWeChat/utils""net/http""strings""time")const BaseUrl = "https://api.weixin.qq.com"type WxMiniProgram struct {appId stringappSecret stringaccessToken stringexpireIn int64expireTime *time.TimeOptions map[string]string}func NewWxMiniProgram(appId, appSecret string, options ...map[string]string) (*WxMiniProgram, error) {if strings.TrimSpace(appId) == "" || strings.TrimSpace(appSecret) == "" {return nil, errors.New("")}mp := new(WxMiniProgram)mp.appId = appIdmp.appSecret = appSecreterr := mp.FetchAccessToken()if len(options) > 0 {mp.Options = options[0]} else {mp.Options = make(map[string]string)}return mp, err}func (mp WxMiniProgram)FetchAccessToken()error{url:=fmt.Sprintf(BaseUrl+"/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",mp.appId,mp.appSecret)resp, err := http.Get(url)if err != nil {return err}result, err := utils.CheckWxResp(resp)if err != nil {return err}if accessToken, exist := result["access_token"]; exist {mp.accessToken = accessToken.(string)mp.expireIn = int64(result["expires_in"].(float64))expireTime := time.Now()expireTime = expireTime.Add(time.Second * time.Duration(mp.expireIn))mp.expireTime = &expireTime}return nil}//验证access_token是否有效func (c WxMiniProgram) IsAccessTokenValid() bool {if len(c.accessToken) == 0 {return false}if c.expireTime == nil {return false}if c.expireTime.Before(time.Now()) {fmt.Println(c.expireTime)return false}return true}//取出access_token,这里专门做成一个返回值的函数,忽略了拉去token的err,主要是为了方便直接使用func(c *WxMiniProgram) GetAccessToken()string{if c.IsAccessTokenValid(){return c.accessToken}err:=c.FetchAccessToken()if err!=nil{return""}return c.accessToken}func(c *WxMiniProgram)GetAppId()string{return c.appId}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。