Kaynağa Gözat

微信开放平台增加refreshtoken缓存 (#822)

* Update accessToken.go

add openplatform refresh_token

* Update accessToken.go

openplatform add refresh_token expire set 10 year

* Update openplatform/context/accessToken.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: houseme <housemecn@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
LarryLiu 1 yıl önce
ebeveyn
işleme
44150c557e
1 değiştirilmiş dosya ile 15 ekleme ve 1 silme
  1. 15 1
      openplatform/context/accessToken.go

+ 15 - 1
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
 }