mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 21:02:25 +08:00
* feat: enhance WorkAccessToken to include AgentID for improved token management - Added AgentID field to WorkAccessToken struct. - Updated NewWorkAccessToken function to accept AgentID as a parameter. - Modified access token cache key to incorporate AgentID, ensuring unique cache entries per agent. This change improves the handling of access tokens in a multi-agent environment. * refactor: enhance WorkAccessToken to improve cache key handling - Updated the AgentID field in WorkAccessToken struct to clarify its optional nature for distinguishing applications. - Modified the access token cache key construction to support both new and legacy formats based on the presence of AgentID. - Added comments for better understanding of the cache key logic and its compatibility with historical versions. This change improves the flexibility and clarity of access token management in multi-agent scenarios. * feat: enhance WorkAccessToken with new constructor for AgentID support - Introduced NewWorkAccessTokenWithAgentID function to maintain backward compatibility while allowing for AgentID usage. - Updated NewWorkAccessToken to call the new constructor, ensuring seamless integration. - Improved error handling in GetAccessTokenContext by checking for cache availability and handling potential errors during cache operations. This change enhances the flexibility of access token management, particularly in multi-agent scenarios, while ensuring compatibility with existing implementations.
44 lines
1.5 KiB
Go
44 lines
1.5 KiB
Go
package kf
|
||
|
||
import (
|
||
"github.com/silenceper/wechat/v2/cache"
|
||
"github.com/silenceper/wechat/v2/credential"
|
||
"github.com/silenceper/wechat/v2/work/config"
|
||
"github.com/silenceper/wechat/v2/work/context"
|
||
)
|
||
|
||
// Client 微信客服实例
|
||
type Client struct {
|
||
corpID string // 企业ID:企业开通的每个微信客服,都对应唯一的企业ID,企业可在微信客服管理后台的企业信息处查看
|
||
secret string // Secret是微信客服用于校验开发者身份的访问密钥,企业成功注册微信客服后,可在「微信客服管理后台-开发配置」处获取
|
||
token string // 用于生成签名校验回调请求的合法性
|
||
encodingAESKey string // 回调消息加解密参数是AES密钥的Base64编码,用于解密回调消息内容对应的密文
|
||
cache cache.Cache
|
||
ctx *context.Context
|
||
}
|
||
|
||
// NewClient 初始化微信客服实例
|
||
func NewClient(cfg *config.Config) (client *Client, err error) {
|
||
if cfg.Cache == nil {
|
||
return nil, NewSDKErr(50001)
|
||
}
|
||
|
||
// 初始化 AccessToken Handle
|
||
defaultAkHandle := credential.NewWorkAccessToken(cfg.CorpID, cfg.CorpSecret, cfg.AgentID, credential.CacheKeyWorkPrefix, cfg.Cache)
|
||
ctx := &context.Context{
|
||
Config: cfg,
|
||
AccessTokenHandle: defaultAkHandle,
|
||
}
|
||
|
||
client = &Client{
|
||
corpID: cfg.CorpID,
|
||
secret: cfg.CorpSecret,
|
||
token: cfg.Token,
|
||
encodingAESKey: cfg.EncodingAESKey,
|
||
cache: cfg.Cache,
|
||
ctx: ctx,
|
||
}
|
||
|
||
return client, nil
|
||
}
|