- handle weimob token expire is not 7200

This commit is contained in:
gazebo
2019-01-15 16:19:53 +08:00
parent 0873043449
commit ec31b69982

View File

@@ -32,7 +32,7 @@ type ElmTokenForCompatible struct {
Success bool `json:"success"`
}
func RefreshConfig(configKey string, expiresTime time.Duration, configGetter func() string, configSetter func(value string)) error {
func RefreshConfig(configKey string, expiresTime time.Duration, configGetter func() (string, string), configSetter func(value string)) error {
sleepGap := expiresTime / 10
needRefreshGap := expiresTime * 8 / 10
if sleepGap > maxRefreshGap {
@@ -58,7 +58,7 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun
}
}
if handleType != 0 {
if curConfig.Token = configGetter(); curConfig.Token == "" {
if curConfig.Token, curConfig.Date = configGetter(); curConfig.Token == "" {
if beego.BConfig.RunMode == "prod" {
globals.SugarLogger.Errorf("RefreshConfig %s get empty token", configKey)
} else {
@@ -68,7 +68,9 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun
}
globals.SugarLogger.Debugf("RefreshConfig refresh %s, value:%s", configKey, curConfig.Token)
curConfig.Date = utils.GetCurTimeStr()
if curConfig.Date == "" {
curConfig.Date = utils.GetCurTimeStr()
}
var num int64
var err error
@@ -101,20 +103,20 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun
}
func RefreshWeixinToken() error {
return RefreshConfig("wechat", weixinTokenExpires, func() string {
return RefreshConfig("wechat", weixinTokenExpires, func() (string, string) {
if beego.BConfig.RunMode == "prod" {
if tokenInfo, err := api.WeixinAPI.RefreshToken(); err == nil {
return tokenInfo.AccessToken
return tokenInfo.AccessToken, ""
}
}
return ""
return "", ""
}, func(value string) {
api.WeixinAPI.SetToken(value)
})
}
func RefreshElmToken() error {
return RefreshConfig("eleme", elmTokenExpires, func() string {
return RefreshConfig("eleme", elmTokenExpires, func() (string, string) {
if beego.BConfig.RunMode == "prod" {
if tokenInfo, err := api.ElmAPI.RefreshTokenIndividual(); err == nil {
tokenInfo2 := &ElmTokenForCompatible{
@@ -126,10 +128,10 @@ func RefreshElmToken() error {
RefreshToken: "",
Success: true,
}
return string(utils.MustMarshal(tokenInfo2))
return string(utils.MustMarshal(tokenInfo2)), ""
}
}
return ""
return "", ""
}, func(value string) {
var tokenInfo ElmTokenForCompatible
err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo)
@@ -140,13 +142,13 @@ func RefreshElmToken() error {
}
func RefreshWeimobToken() error {
return RefreshConfig("weimob", weimobTokenExpires, func() string {
return RefreshConfig("weimob", weimobTokenExpires, func() (string, string) {
if true { //beego.BConfig.RunMode == "prod" {
if tokenInfo, err := api.WeimobAPI.RefreshTokenByRefreshToken(); err == nil {
return string(utils.MustMarshal(tokenInfo))
return string(utils.MustMarshal(tokenInfo)), utils.Time2Str(time.Now().Add((time.Duration(tokenInfo.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second))
}
}
return ""
return "", ""
}, func(value string) {
var tokenInfo *weimobapi.TokenInfo
err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo)
@@ -161,7 +163,7 @@ func SaveWeimobToken(token *weimobapi.TokenInfo) (err error) {
config := &legacymodel.Config{
Thirdparty: "weimob",
Token: string(utils.MustMarshal(token)),
Date: utils.GetCurTimeStr(),
Date: utils.Time2Str(time.Now().Add((time.Duration(token.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second)),
LastOperator: "admin",
}
return dao.CreateOrUpdate(db, config)