Files
baseapi/platformapi/tiktok_shop/tiktok_api/api.go
邹宗楠 6a1c183c28 1
2022-08-31 10:54:01 +08:00

75 lines
1.8 KiB
Go

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
}