From 3f7f7bf9952dda22221d478ad645320ae19df6c0 Mon Sep 17 00:00:00 2001 From: horsleyli Date: Sun, 9 Apr 2023 20:12:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BA=91=E6=89=98=E7=AE=A1?= =?UTF-8?q?=E7=9A=84=E5=BC=80=E6=94=BE=E6=8E=A5=E5=8F=A3=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- miniprogram/business/phone_number.go | 18 ++++++++++++++---- miniprogram/config/config.go | 7 +++++++ miniprogram/miniprogram.go | 8 +++++--- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/miniprogram/business/phone_number.go b/miniprogram/business/phone_number.go index bf99057e..f5505ec4 100644 --- a/miniprogram/business/phone_number.go +++ b/miniprogram/business/phone_number.go @@ -28,12 +28,22 @@ type PhoneInfo struct { // GetPhoneNumber code换取用户手机号。 每个code只能使用一次,code的有效期为5min func (business *Business) GetPhoneNumber(in *GetPhoneNumberRequest) (info PhoneInfo, err error) { - accessToken, err := business.GetAccessToken() - if err != nil { - return + var uri string + if business.Config.NoAccessToken { + uri = getPhoneNumberURL[:len(getPhoneNumberURL)-16] // ?access_token=%s + } else { + accessToken, err := business.GetAccessToken() + if err != nil { + return info, err + } + + uri = fmt.Sprintf(getPhoneNumberURL, accessToken) + } + + if business.Config.UsingHTTP { + uri = "http" + uri[5:] } - uri := fmt.Sprintf(getPhoneNumberURL, accessToken) response, err := util.PostJSON(uri, in) if err != nil { return diff --git a/miniprogram/config/config.go b/miniprogram/config/config.go index f371883f..8ea732fa 100644 --- a/miniprogram/config/config.go +++ b/miniprogram/config/config.go @@ -10,4 +10,11 @@ type Config struct { AppID string `json:"app_id"` // appid AppSecret string `json:"app_secret"` // appSecret Cache cache.Cache + + //使用云托管开放接口方式访问接口,此时API调用不附着AccessToken + //参考文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/guide/weixin/open.html + NoAccessToken bool `json:"cloud_run_access"` + //是否使用云托管开放接口方式访问接口,此时API调用可以开启使用HTTP API + //参考文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/guide/weixin/open.html + UsingHTTP bool `json:"using_http"` } diff --git a/miniprogram/miniprogram.go b/miniprogram/miniprogram.go index d76d7c24..ed6308c5 100644 --- a/miniprogram/miniprogram.go +++ b/miniprogram/miniprogram.go @@ -29,10 +29,12 @@ type MiniProgram struct { // NewMiniProgram 实例化小程序API func NewMiniProgram(cfg *config.Config) *MiniProgram { - defaultAkHandle := credential.NewDefaultAccessToken(cfg.AppID, cfg.AppSecret, credential.CacheKeyMiniProgramPrefix, cfg.Cache) ctx := &context.Context{ - Config: cfg, - AccessTokenHandle: defaultAkHandle, + Config: cfg, + } + + if !cfg.NoAccessToken { + ctx.AccessTokenHandle = credential.NewDefaultAccessToken(cfg.AppID, cfg.AppSecret, credential.CacheKeyMiniProgramPrefix, cfg.Cache) } return &MiniProgram{ctx} }