|
|
|
@ -166,8 +166,12 @@ public class TiktokUserServiceImpl implements TiktokUserService { |
|
|
|
* @return - |
|
|
|
*/ |
|
|
|
private TiktokSessionInfoVo getSessionInfo(String code) { |
|
|
|
String url = tiktokConfig.getSessionInfoUrl()+"?appid=" + tiktokConfig.getAppId() + "&secret=" + tiktokConfig.getSecret() + "&js_code=" + code + "&grant_type=authorization_code"; |
|
|
|
JSONObject sessionInfo = JSONObject.parseObject(restTemplate.getForObject(url, String.class)); |
|
|
|
Map<String,String> map = new HashMap<>(); |
|
|
|
map.put("appid",tiktokConfig.getAppId()); |
|
|
|
map.put("secret", tiktokConfig.getSecret()); |
|
|
|
map.put("code", code); |
|
|
|
map.put("grant_type", "client_credential"); |
|
|
|
JSONObject sessionInfo = restTemplate.postForObject(tiktokConfig.getSessionInfoUrl(), map, JSONObject.class); |
|
|
|
if(!sessionInfo.getString("err_no").equals(TiktokConstant.SUCCESS)){ |
|
|
|
log.error("抖音授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】",sessionInfo.getString("err_no"),sessionInfo.getString("err_tips")); |
|
|
|
throw new ServiceException("抖音授权session接口调用失败!",TiktokConstant.TIKTOK_AUTH_ERROR); |
|
|
|
@ -240,14 +244,14 @@ public class TiktokUserServiceImpl implements TiktokUserService { |
|
|
|
TiktokSessionInfoVo sessionInfo = this.getSessionInfo(dto.getCode()); |
|
|
|
//检查数据库中是否存在该openId,存在则直接设置会话状态登录;不存在则新增
|
|
|
|
LambdaQueryWrapper<TiktokUser> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
wrapper.eq(sessionInfo.getOpenId() != null,TiktokUser::getTiktokCode,dto.getCode()); |
|
|
|
wrapper.eq(sessionInfo.getOpenId() != null,TiktokUser::getTiktokCode,Sm4Util.sm4Encryption(sessionInfo.getOpenId())); |
|
|
|
TiktokUser tiktokUser = tiktokUserMapper.selectOne(wrapper); |
|
|
|
if(tiktokUser == null){ |
|
|
|
//新用户,新增
|
|
|
|
tiktokUser = this.saveUserInfo(sessionInfo.getOpenId(), sessionInfo.getSessionKey(), dto.getEncryptedData(), dto.getIv()); |
|
|
|
} |
|
|
|
//设置会话状态
|
|
|
|
String redisKey = RedisKeyConstant.TIKTOK_USER_LOGIN_KEY+sessionInfo.getOpenId(); |
|
|
|
String redisKey = RedisKeyConstant.TIKTOK_USER_LOGIN_KEY+Sm4Util.sm4Encryption(sessionInfo.getOpenId()); |
|
|
|
//存在该登录态则删除刷新
|
|
|
|
if(redisService.hasKey(redisKey)){ |
|
|
|
redisService.deleteObject(redisKey); |
|
|
|
@ -255,11 +259,13 @@ public class TiktokUserServiceImpl implements TiktokUserService { |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
|
|
String randomId = IdUtils.fastSimpleUUID(); |
|
|
|
sb.append(randomId).append("#").append(sessionInfo.getOpenId()); |
|
|
|
//设置登录会话
|
|
|
|
redisService.setCacheObject(redisKey,sb.toString(),30L, TimeUnit.DAYS); |
|
|
|
|
|
|
|
Map<String, Object> map = new HashMap<>(2); |
|
|
|
map.put("token", sb.toString()); |
|
|
|
map.put("sessionKey", sessionInfo.getSessionKey()); |
|
|
|
map.put("userInfo",tiktokUser); |
|
|
|
//设置登录会话
|
|
|
|
redisService.setCacheObject(redisKey,map,30L, TimeUnit.DAYS); |
|
|
|
return map; |
|
|
|
} |
|
|
|
|
|
|
|
|