diff --git a/credential/default_access_token.go b/credential/default_access_token.go index 90dffd1..b4d9d4c 100644 --- a/credential/default_access_token.go +++ b/credential/default_access_token.go @@ -66,9 +66,11 @@ func (ak *DefaultAccessToken) GetAccessToken() (accessToken string, err error) { func (ak *DefaultAccessToken) GetAccessTokenContext(ctx context.Context) (accessToken string, err error) { // 先从cache中取 accessTokenCacheKey := fmt.Sprintf("%s_access_token_%s", ak.cacheKeyPrefix, ak.appID) - val := ak.cache.Get(accessTokenCacheKey) - if accessToken = val.(string); accessToken != "" { - return + + if val := ak.cache.Get(accessTokenCacheKey); val != nil { + if accessToken = val.(string); accessToken != "" { + return + } } // 加上lock,是为了防止在并发获取token时,cache刚好失效,导致从微信服务器上获取到不同token @@ -76,9 +78,10 @@ func (ak *DefaultAccessToken) GetAccessTokenContext(ctx context.Context) (access defer ak.accessTokenLock.Unlock() // 双检,防止重复从微信服务器获取 - val = ak.cache.Get(accessTokenCacheKey) - if accessToken = val.(string); accessToken != "" { - return + if val := ak.cache.Get(accessTokenCacheKey); val != nil { + if accessToken = val.(string); accessToken != "" { + return + } } // cache失效,从微信服务器获取