diff --git a/openplatform/context/accessToken.go b/openplatform/context/accessToken.go index 465eb17..9a231be 100644 --- a/openplatform/context/accessToken.go +++ b/openplatform/context/accessToken.go @@ -225,6 +225,10 @@ func (ctx *Context) RefreshAuthrTokenContext(stdCtx context.Context, appid, refr if err := cache.SetContext(stdCtx, ctx.Cache, authrTokenKey, ret.AccessToken, time.Second*time.Duration(ret.ExpiresIn-30)); err != nil { return nil, err } + refreshTokenKey := "authorizer_refresh_token_" + appid + if err := cache.SetContext(stdCtx, ctx.Cache, refreshTokenKey, ret.RefreshToken, 10*365*24*60*60*time.Second); err != nil { + return nil, err + } return ret, nil } @@ -238,8 +242,18 @@ func (ctx *Context) GetAuthrAccessTokenContext(stdCtx context.Context, appid str authrTokenKey := "authorizer_access_token_" + appid val := cache.GetContext(stdCtx, ctx.Cache, authrTokenKey) if val == nil { - return "", fmt.Errorf("cannot get authorizer %s access token", appid) + refreshTokenKey := "authorizer_refresh_token_" + appid + val := cache.GetContext(stdCtx, ctx.Cache, refreshTokenKey) + if val == nil { + return "", fmt.Errorf("cannot get authorizer %s refresh token", appid) + } + token, err := ctx.RefreshAuthrTokenContext(stdCtx, appid, val.(string)) + if err != nil { + return "", err + } + return token.AccessToken, nil } + return val.(string), nil }