refreshtoken用mysql_微信access_token和refresh_token保存于redis
此處以保存用戶授權access_token為例,接口調用access_token可在項目啟動時進行緩存。部分代碼如下:
@Autowired
private RedisTemplate redisTemplate;
@Value("${myapp.redisWxUserAccessToken}")
private String redisWxUserAccessToken;
// 獲取
public String getUserAccessToken(Object userId) {
String accessToken = null;
if(StringUtils.isEmpty(userId)) return accessToken;
String accessTokenStr = (String) redisTemplate.opsForHash().get(redisWxUserAccessToken, String.valueOf(userId));
long now = (new Date()).getTime();
if(!StringUtils.isEmpty(accessTokenStr)) {
String[] arr = accessTokenStr.split("#");
if(now < Long.valueOf(arr[1])) {
accessToken = arr[0];
}
}
if(StringUtils.isEmpty(accessToken)) {
accessToken = getUserAccessTokenByRefreshToken(userId);
}
return accessToken;
}
// 重新獲取
Object expiresIn = accessTokenMap.get("expires_in"); // 調用微信授權接口后,返回的expires_in參數
String value = accessTokenNew + "#" + getNowExpiresIn(expiresIn); // 此處是設置有效期
redisTemplate.opsForHash().put(redisWxUserAccessToken, String.valueOf(userId), value);
public Long getNowExpiresIn(Object expiresIn) {
long now = (new Date()).getTime();
if(expiresIn == null) return now;
Long expiresMs = Long.valueOf(String.valueOf(expiresIn)) - 15 * 60;
return expiresMs * 1000 + now;
}
總結
以上是生活随笔為你收集整理的refreshtoken用mysql_微信access_token和refresh_token保存于redis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux权限用户组(linux 权限用
- 下一篇: sqlrelay mysql_php+s