59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package logic
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"github.com/dubbogo/gost/log/logger"
|
|
"github.com/exhibition-main/internal/model"
|
|
"github.com/exhibition-main/pkg/utils"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
grantType = "client_credentials"
|
|
clientId = "SjscdLEybzyxiV7lXKA5iSvZ"
|
|
clientSecret = "22fCduMdCarO6WWOi4WiSmt9rIeez3FW"
|
|
)
|
|
|
|
var accessToken string
|
|
var expiresIn uint64
|
|
|
|
func GetImageAccessToken() (string, error) {
|
|
var (
|
|
resObj model.BaiduAccessToken
|
|
err error
|
|
// daoAccessToken entity.AccessToken
|
|
)
|
|
if expiresIn == 0 || expiresIn < uint64(time.Now().Unix()) {
|
|
fmt.Println(1)
|
|
if resObj, err = getAccessTokenWithApi(); err != nil { //从链上获取
|
|
return "", err
|
|
}
|
|
accessToken = resObj.Access_token
|
|
expiresIn = resObj.Expires_in
|
|
}
|
|
|
|
return accessToken, nil
|
|
|
|
}
|
|
|
|
func getAccessTokenWithApi() (model.BaiduAccessToken, error) {
|
|
var (
|
|
resObj model.BaiduAccessToken
|
|
err error
|
|
)
|
|
url := "https://aip.baidubce.com/oauth/2.0/token"
|
|
urlReq := "?grant_type=" + grantType + "&client_id=" + clientId + "&client_secret=" + clientSecret
|
|
res := utils.Get(url + urlReq)
|
|
if err = json.Unmarshal([]byte(res), &resObj); err != nil {
|
|
logger.Error("getAccessTokenWithApi json err", err)
|
|
return resObj, err
|
|
}
|
|
if resObj.Error != "" {
|
|
logger.Error("getAccessTokenWithApi err", err)
|
|
return resObj, errors.New(resObj.Error_description)
|
|
}
|
|
return resObj, err
|
|
}
|