diff --git a/miniprogram/business/phone_number.go b/miniprogram/business/phone_number.go index bf99057ea..f5505ec4f 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 f371883fe..8ea732faf 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 d76d7c243..ed6308c5e 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} }