/** * Copyright (c) 2022 Yansen Zhang * wxcomponent is licensed under Mulan PSL v2. * You can use this software according to the terms and conditions of the Mulan PSL v2. * You may obtain a copy of Mulan PSL v2 at: * http://license.coscl.org.cn/MulanPSL2 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. * See the Mulan PSL v2 for more details. **/ package wxcomponent import ( "gitee.com/yansen_zh/wxcomponent/api/authorization" "gitee.com/yansen_zh/wxcomponent/config" "gitee.com/yansen_zh/wxcomponent/utils" ) // 授权与Token // RefreshToken 获取令牌 // 主要是定时任务调用 func RefreshToken() error { result, err := authorization.GetComponentToken() if err != nil { return err } token := result.ComponentAccessToken expire := utils.GetExpireTime(result.ExpiresIn) if e := config.RefreshToken(token, expire); e != nil { return e } return nil } // CreateAuthLink 自建授权链接, client 默认是 PC 端, 如果是移动端, 需要传入 H5。 // url 为需要跳转的结果页, 必须是原始的值, 不能经过 encode 处理. // appID 为小程序或者公众号ID, 可以不传 func CreateAuthLink(client, url, appID string) (string, error) { preAuth, err := authorization.CreatePreAuthCode() if err != nil { return "", err } return authorization.GetAuthLink(client, preAuth.PreAuthCode, url, appID, 3) } // RefreshAuthorizerToken 刷新接口调用令牌 // 主要是定时任务调用 func RefreshAuthorizerToken(appID string) error { res, err := authorization.RefreshAuthorizerToken(appID, config.GetAuthorizer().GetRefreshToken(appID)) if err != nil { return err } expire := utils.GetExpireTime(res.ExpiresIn) if err := config.GetAuthorizer().RefreshToken(appID, res.AuthorizerAccessToken, res.AuthorizerRefreshToken, expire); err != nil { return err } return nil } // GetAuthorizerInfo 获取授权帐号信息 func GetAuthorizerInfo(appID string) (*authorization.AuthorizerInfoResult, error) { return authorization.GetAuthorizerInfo(appID) }