- refresh token的时候要判断相应API是否存在

This commit is contained in:
gazebo
2019-04-24 14:21:43 +08:00
parent 7ac08594b4
commit b6c60c2cc3

View File

@@ -106,67 +106,76 @@ func RefreshConfig(configKey string, expiresTime time.Duration, configGetter fun
return err return err
} }
func RefreshWeixinToken() error { func RefreshWeixinToken() (err error) {
return RefreshConfig("wechat", weixinTokenExpires, func() (string, string) { if api.WeixinAPI != nil {
globals.SugarLogger.Debugf("RefreshWeixinToken RunMode:%s", beego.BConfig.RunMode) err = RefreshConfig("wechat", weixinTokenExpires, func() (string, string) {
if beego.BConfig.RunMode == "prod" { globals.SugarLogger.Debugf("RefreshWeixinToken RunMode:%s", beego.BConfig.RunMode)
if tokenInfo, err := api.WeixinAPI.CBRetrieveToken(); err == nil { if beego.BConfig.RunMode == "prod" {
globals.SugarLogger.Debugf("RefreshWeixinToken tokenInfo:%s", utils.Format4Output(tokenInfo, true)) if tokenInfo, err := api.WeixinAPI.CBRetrieveToken(); err == nil {
return tokenInfo.AccessToken, "" globals.SugarLogger.Debugf("RefreshWeixinToken tokenInfo:%s", utils.Format4Output(tokenInfo, true))
} else { return tokenInfo.AccessToken, ""
globals.SugarLogger.Errorf("RefreshWeixinToken RefreshToken failed with error:%v", err) } else {
} globals.SugarLogger.Errorf("RefreshWeixinToken RefreshToken failed with error:%v", err)
}
return "", ""
}, func(value string) {
api.WeixinAPI.CBSetToken(value)
})
}
func RefreshElmToken() error {
return RefreshConfig("eleme", elmTokenExpires, func() (string, string) {
if beego.BConfig.RunMode == "prod" {
if tokenInfo, err := api.ElmAPI.RefreshTokenIndividual(); err == nil {
tokenInfo2 := &ElmTokenForCompatible{
Error: "",
ErrorDescription: "",
AccessToken: tokenInfo.AccessToken,
TokenType: tokenInfo.TokenType,
Expires: tokenInfo.ExpiresIn,
RefreshToken: "",
Success: true,
} }
return string(utils.MustMarshal(tokenInfo2)), ""
} }
} return "", ""
return "", "" }, func(value string) {
}, func(value string) { api.WeixinAPI.CBSetToken(value)
var tokenInfo ElmTokenForCompatible })
err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo) }
if err == nil { return err
api.ElmAPI.SetToken(tokenInfo.AccessToken)
}
})
} }
func RefreshWeimobToken() error { func RefreshElmToken() (err error) {
return RefreshConfig("weimob", weimobTokenExpires, func() (string, string) { if api.ElmAPI != nil {
if beego.BConfig.RunMode == "prod" { err = RefreshConfig("eleme", elmTokenExpires, func() (string, string) {
if tokenInfo, err := api.WeimobAPI.RefreshTokenByRefreshToken(); err == nil { if beego.BConfig.RunMode == "prod" {
return string(utils.MustMarshal(tokenInfo)), utils.Time2Str(time.Now().Add((time.Duration(tokenInfo.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second)) if tokenInfo, err := api.ElmAPI.RefreshTokenIndividual(); err == nil {
tokenInfo2 := &ElmTokenForCompatible{
Error: "",
ErrorDescription: "",
AccessToken: tokenInfo.AccessToken,
TokenType: tokenInfo.TokenType,
Expires: tokenInfo.ExpiresIn,
RefreshToken: "",
Success: true,
}
return string(utils.MustMarshal(tokenInfo2)), ""
}
} }
} return "", ""
return "", "" }, func(value string) {
}, func(value string) { var tokenInfo ElmTokenForCompatible
var tokenInfo *weimobapi.TokenInfo err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo)
err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo) if err == nil {
if err == nil { api.ElmAPI.SetToken(tokenInfo.AccessToken)
api.WeimobAPI.SetToken(tokenInfo) }
} })
}) }
return err
} }
func RefreshDingDingToken() error { func RefreshWeimobToken() (err error) {
if api.WeimobAPI != nil {
err = RefreshConfig("weimob", weimobTokenExpires, func() (string, string) {
if beego.BConfig.RunMode == "prod" {
if tokenInfo, err := api.WeimobAPI.RefreshTokenByRefreshToken(); err == nil {
return string(utils.MustMarshal(tokenInfo)), utils.Time2Str(time.Now().Add((time.Duration(tokenInfo.ExpiresIn) - weimobTokenExpires/time.Second) * time.Second))
}
}
return "", ""
}, func(value string) {
var tokenInfo *weimobapi.TokenInfo
err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo)
if err == nil {
api.WeimobAPI.SetToken(tokenInfo)
}
})
}
return err
}
func RefreshDingDingToken() (err error) {
api.DingDingAPI.RetrieveToken() api.DingDingAPI.RetrieveToken()
return RefreshConfig("dingding", dingdingTokenExpires, func() (string, string) { return RefreshConfig("dingding", dingdingTokenExpires, func() (string, string) {
globals.SugarLogger.Debugf("RefreshDingDingToken RunMode:%s", beego.BConfig.RunMode) globals.SugarLogger.Debugf("RefreshDingDingToken RunMode:%s", beego.BConfig.RunMode)
@@ -195,7 +204,7 @@ func SaveWeimobToken(token *weimobapi.TokenInfo) (err error) {
return dao.CreateOrUpdate(db, config) return dao.CreateOrUpdate(db, config)
} }
func RefreshYilianyunToken() error { func RefreshYilianyunToken() (err error) {
return RefreshConfig("yilianyun", yilianyunTokenExpires, func() (string, string) { return RefreshConfig("yilianyun", yilianyunTokenExpires, func() (string, string) {
globals.SugarLogger.Debugf("RefreshYilianyunToken RunMode:%s", beego.BConfig.RunMode) globals.SugarLogger.Debugf("RefreshYilianyunToken RunMode:%s", beego.BConfig.RunMode)
if beego.BConfig.RunMode == "prod" { if beego.BConfig.RunMode == "prod" {