123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /**
- * 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
-
- // VerifyTicket 验证票据
- func VerifyTicket(ticket string) error {
- expire := utils.GetExpireTime(12 * 3600) // component_verify_ticket 的有效时间为12小时
- return config.RefreshVerifyTicket(ticket, expire)
- }
-
- // 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)
- }
-
- // RefreshAuthorizerInfo 刷新授权对象信息
- func RefreshAuthorizerInfo(authCode string) error {
- res, err := authorization.GetQueryAuth(authCode)
- if err != nil {
- return err
- }
-
- authInfo := res.AuthorizationInfo
- appID := authInfo.AuthorizerAppID
- expire := utils.GetExpireTime(authInfo.ExpiresIn)
-
- funcLst := make([]int, 0)
- if nil != authInfo.FuncInfo && len(authInfo.FuncInfo) > 0 {
- for _, info := range authInfo.FuncInfo {
- funcLst = append(funcLst, info.FuncscopeCategory.ID)
- }
- }
-
- config.GetAuthorizer().RefreshFuncInfo(appID, funcLst)
- if err := config.GetAuthorizer().RefreshToken(appID, authInfo.AuthorizerAccessToken, authInfo.AuthorizerRefreshToken, expire); err != nil {
- return err
- }
-
- return nil
- }
-
- // 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)
- }
|