This commit is contained in:
邹宗楠
2022-09-01 15:51:23 +08:00
parent b6c64a493f
commit 167de3cae6
10 changed files with 566 additions and 26 deletions

View File

@@ -4,20 +4,29 @@ import (
"encoding/json"
doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core"
"git.rosy.net.cn/jx-callback/globals"
"sync"
"time"
)
const (
CallbackSuccessCode = 0
CallbackSuccess = "success"
CallbackFailCode = 1000
CallbackFail = "fail"
)
var AccessToken *doudian_sdk.AccessToken // 存储数据库
type Api struct {
type API struct {
appKey string
appSecret string
accessToken string
refreshToken string
expiresIn int64
locker sync.RWMutex
}
func New(appKey, appSecret, accessToken string) *Api {
func New(appKey, appSecret, accessToken string) *API {
var access *doudian_sdk.AccessToken
if accessToken != "" {
if err := json.Unmarshal([]byte(accessToken), &access); err != nil {
@@ -28,17 +37,17 @@ func New(appKey, appSecret, accessToken string) *Api {
}
}
return &Api{
return &API{
appKey: appKey,
appSecret: appSecret,
}
}
func (a *Api) GetToken() string {
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 {
if _, err := a.RefreshToken(); err != nil {
globals.SugarLogger.Debug("Tiktok RefreshToken Err : ", err)
return ""
}
@@ -47,7 +56,7 @@ func (a *Api) GetToken() string {
}
// CreateToken 创建token只有第一次授权或者更新授权才需要,其他时候直接刷新就可以啦
func (a *Api) CreateToken(code string) error {
func (a *API) CreateToken(code string) (*doudian_sdk.CreateTokenData, error) {
doudian_sdk.GlobalConfig.AppKey = a.appKey
doudian_sdk.GlobalConfig.AppSecret = a.appSecret
buildParam := &doudian_sdk.BuildAccessTokenParam{
@@ -57,29 +66,41 @@ func (a *Api) CreateToken(code string) error {
}
access, err := doudian_sdk.BuildAccessToken(buildParam)
if err != nil {
return err
return nil, err
}
a.accessToken = access.AccessToken
a.refreshToken = access.RefreshToken
a.expiresIn = access.ExpiresIn
AccessToken = access
return nil
return &access.CreateTokenData, nil
}
// RefreshToken 刷新token
func (a *Api) RefreshToken() error {
func (a *API) RefreshToken() (*doudian_sdk.CreateTokenData, 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
return nil, err
}
a.accessToken = createToken.Data.AccessToken
a.refreshToken = createToken.Data.RefreshToken
a.expiresIn = createToken.Data.ExpiresIn
AccessToken.CreateTokenData = createToken.Data
return nil
return &createToken.Data, nil
}
func (a *API) SetToken(token string) {
a.locker.Lock()
defer a.locker.Unlock()
a.accessToken = token
}
func (a *API) SetRefreshToken(token string) {
a.locker.Lock()
defer a.locker.Unlock()
a.refreshToken = token
}