目前先教大家如何获取用户基本信息,代码直接复制就基本上可以用
maven版本一定要使用1.0.1版本1.0.0版本有问题(官方文档写的1.0.0)
<dependency>
<groupId>com.douyin.openapi</groupId>
<artifactId>sdk</artifactId>
<version>1.0.1</version>
</dependency>
上正式代码
1:获取openId以及换取用户基本信息的sessionKey
/**
* 获取用户openId
* @param code 前端返回
* @param encryptedData 前端返回
* @param iv 前端返回
* @param phoneCode
* @return
*/
public Map<String, Object> getUserInfo(String code,String encryptedData,String iv,String phoneCode){
try{
Config config = new Config().setClientKey(APP_ID).setClientSecret(APP_SECRET); // 改成自己的app_id跟secret
Client client = new Client(config);
V2Jscode2sessionRequest sdkRequest = new V2Jscode2sessionRequest();
sdkRequest.setAppid(APP_ID);
sdkRequest.setCode(code);
sdkRequest.setSecret(APP_SECRET);
//这里可以获取到openId以及其他数据 sdkResponse.getData().getOpenid()
V2Jscode2sessionResponse sdkResponse = client.V2Jscode2session(sdkRequest);
String sessionKey = sdkResponse.getData().getSessionKey();
String decrypt = decrypt(encryptedData, sessionKey, iv);
// getUserInfo(phoneCode);
Map<String, Object> map = new HashMap<>();
map.put("openId", sdkResponse.getData().getOpenid());
map.put("decrypt", decrypt);
return map;
}catch (Exception e){
System.err.println(e.getMessage());
return null;
}
}
2:解密获取用户头像以及昵称
/**
* 解密获取用户基本信息 (头像 昵称)
* @param encryptedData 前端返回
* @param sessionKey 调用V2Jscode2session获取
* @param iv 前端返回
* @return
* @throws Exception
*/
public static String decrypt(String encryptedData, String sessionKey, String iv) throws Exception {
Base64.Decoder decoder = Base64.getDecoder();
byte[] sessionKeyBytes = decoder.decode(sessionKey);
byte[] ivBytes = decoder.decode(iv);
byte[] encryptedBytes = decoder.decode(encryptedData);
// JDK does not support PKCS7Padding, use PKCS5Padding instead
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec skeySpec = new SecretKeySpec(sessionKeyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivSpec);
byte[] ret = cipher.doFinal(encryptedBytes);
return new String(ret);
}
备注:看文档一定要有耐心,先了解业务逻辑再开始敲代码,不然就会像无头苍蝇一样各种问题(不只是写给大家也是写给自己)