package com.ruoyi.order.util.douyin;
|
|
import com.aliyun.tea.TeaException;
|
import com.douyin.openapi.client.Client;
|
import com.douyin.openapi.client.models.OauthClientTokenRequest;
|
import com.douyin.openapi.client.models.OauthClientTokenResponse;
|
import com.douyin.openapi.client.models.OauthClientTokenResponseData;
|
import com.douyin.openapi.credential.models.Config;
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.time.LocalDateTime;
|
import java.time.ZoneOffset;
|
|
/**
|
* 抖音获取client_token工具类
|
* @author zhibing.pu
|
* @Date 2025/6/11 18:46
|
*/
|
@Slf4j
|
public class ClientTokenUtil {
|
|
public static String token = "";
|
|
public static Long expiration_time = 0L;
|
|
|
/**
|
* 获取client_token
|
*/
|
public static void getClientToken() {
|
try {
|
Config config = new Config().setClientKey(DouyinConfig.CLIENT_KEY).setClientSecret(DouyinConfig.CLIENT_SECRET); // 改成自己的app_id跟secret
|
Client client = new Client(config);
|
/* 构建请求参数,该代码示例中只给出部分参数,请用户根据需要自行构建参数值
|
token:
|
1.若用户自行维护token,将用户维护的token赋值给该参数即可
|
2.SDK包中有获取token的函数,请根据接口path在《OpenAPI SDK 总览》文档中查找获取token函数的名字
|
在使用过程中,请注意token互刷问题
|
header:
|
sdk中默认填充content-type请求头,若不需要填充除content-type之外的请求头,删除该参数即可
|
*/
|
OauthClientTokenRequest sdkRequest = new OauthClientTokenRequest();
|
sdkRequest.setClientKey(DouyinConfig.CLIENT_KEY);
|
sdkRequest.setClientSecret(DouyinConfig.CLIENT_SECRET);
|
sdkRequest.setGrantType("client_credential");
|
OauthClientTokenResponse sdkResponse = client.OauthClientToken(sdkRequest);
|
String message = sdkResponse.getMessage();
|
if("success".equals(message)){
|
OauthClientTokenResponseData data = sdkResponse.getData();
|
if(data.getErrorCode() != 0){
|
log.error("【抖音】获取client_token失败:{}", data.getDescription());
|
throw new RuntimeException("【抖音】获取client_token失败:" + data.getDescription());
|
}
|
token = data.getAccessToken();
|
long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
|
expiration_time = second + data.getExpiresIn() - 30;
|
}else{
|
OauthClientTokenResponseData data = sdkResponse.getData();
|
if(data.getErrorCode() != 0){
|
log.error("【抖音】获取client_token失败:{}", data.getDescription());
|
throw new RuntimeException("【抖音】获取client_token失败:" + data.getDescription());
|
}
|
}
|
} catch (TeaException e) {
|
System.out.println(e.getMessage());
|
} catch (Exception e) {
|
System.out.println(e.getMessage());
|
}
|
}
|
}
|