package tiktok_api import ( doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" "git.rosy.net.cn/jx-callback/globals" "time" ) var AccessToken *doudian_sdk.AccessToken // 存储数据库 type Api struct { appKey string appSecret string accessToken string refreshToken string expiresIn int64 } func New(appKey, appSecret string) *Api { return &Api{ appKey: appKey, appSecret: appSecret, } } func (a *Api) GetToken() string { if a.expiresIn != 0 && a.expiresIn > time.Now().Unix() && a.accessToken != "" { return a.accessToken } else { if err := a.RefreshToken(); err != nil { globals.SugarLogger.Debug("Tiktok RefreshToken Err : ", err) return "" } return a.accessToken } } // CreateToken 创建token只有第一次授权或者更新授权才需要,其他时候直接刷新就可以啦 func (a *Api) CreateToken(code string) error { doudian_sdk.GlobalConfig.AppKey = a.appKey doudian_sdk.GlobalConfig.AppSecret = a.appSecret buildParam := &doudian_sdk.BuildAccessTokenParam{ Code: code, // 定死还是自动获取 ShopId: 0, Config: nil, } access, err := doudian_sdk.BuildAccessToken(buildParam) if err != nil { return err } a.accessToken = access.AccessToken a.refreshToken = access.RefreshToken a.expiresIn = access.ExpiresIn AccessToken = access return nil } // RefreshToken 刷新token func (a *Api) RefreshToken() error { refresh := doudian_sdk.NewRefreshTokenRequest() refresh.GetParam().RefreshToken = a.refreshToken refresh.GetParam().GrantType = "refresh_token" createToken, err := refresh.Execute(AccessToken) if err != nil { return err } a.accessToken = createToken.Data.AccessToken a.refreshToken = createToken.Data.RefreshToken a.expiresIn = createToken.Data.ExpiresIn AccessToken.CreateTokenData = createToken.Data return nil }