Tiktok shop api 调试

记录一下调试Tiktok shop api 踩坑记录。
主要是在按官网api上规则和加密生成sign时候一直通不过的问题:
官网地址:https://partner.tiktokshop.com/doc/page/63fd743e715d622a338c4eab

直接贴代码了


import lombok.extern.slf4j.Slf4j;


import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.util.*;


/**
 * @author alvis
 * @date 2023/10/19
 */
@Slf4j
public class SignUtil {

    public static String getSignature(String uri, Map<String, String> parametersMap, String appSecret,String body) throws Exception {
        Map<String, String> tempParamsMap = new TreeMap<>(Comparator.naturalOrder());
        tempParamsMap.putAll(parametersMap);
        tempParamsMap.remove("sign");
        tempParamsMap.remove("access_token");
        StringBuilder input = new StringBuilder(uri);
        for (Map.Entry<String, String> entry : tempParamsMap.entrySet()) {
            input.append(entry.getKey()).append(entry.getValue());
        }
        input = new StringBuilder(appSecret + input + body + appSecret);
        return hmacSHA256(appSecret, input.toString());
    }

    public static String getSignature(String uri, Map<String, String> parametersMap, String appSecret) throws Exception {
        Map<String, String> tempParamsMap = new TreeMap<>(Comparator.naturalOrder());
        tempParamsMap.putAll(parametersMap);
        tempParamsMap.remove("sign");
        tempParamsMap.remove("access_token");
        StringBuilder input = new StringBuilder(uri);
        for (Map.Entry<String, String> entry : tempParamsMap.entrySet()) {
            input.append(entry.getKey()).append(entry.getValue());
        }
        input = new StringBuilder(appSecret + input + appSecret);
        return hmacSHA256(appSecret, input.toString());
    }

    /**
     * sha256_HMAC加密
     *
     * @param message 消息
     * @param secret  秘钥
     * @return 加密后字符串
     */
    public static String hmacSHA256(String secret, String message) throws Exception {
        Mac hmacSha256 = Mac.getInstance("HmacSHA256");
        SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
        hmacSha256.init(secret_key);
        byte[] bytes = hmacSha256.doFinal(message.getBytes());
        StringBuilder hs = new StringBuilder();
        String stmp;
        for (int n = 0; bytes != null && n < bytes.length; n++) {
            stmp = Integer.toHexString(bytes[n] & 0XFF);
            if (stmp.length() == 1) {
                hs.append('0');
            }
            hs.append(stmp);
        }
        return hs.toString().toLowerCase();
    }

}

注意 :没有body参数的时候,查询使用无body的函数即可,但是body有参数的时候,此处有坑,拼接字符串的时候要单独处理,body参数构建的json字符串直接拼接在里面即可。这个问题是在postman中代码调试发现:

9a33586972b53ef4d934a5f7b9846cfb95509433/order/202309/orders/searchapp_key6aausirr0gb2fpage_size100shop_cipherTTP_CA2InQEEEEEDEtiBFSZb8SopxJlCAR4g9timestamp1697767243{"create_time_ge":1693497600,"create_time_lt":1697765675}9a33586972b53ef4d934a5f7b9846cfb95509433
ssovit/tiktok-api是一个用于访问和管理抖音(TikTok)平台的API接口库。抖音是一款非常流行的短视频社交平台,通过这个库,我们可以使用Python语言来与抖音平台进行交互,并实现一些常见的操作,如获取用户信息、搜索视频、获取热门话题等。 ssovit/tiktok-api提供了一系列函数和方法,可以帮助我们在代码中进行API调用。我们可以使用该库中的函数来发起HTTP请求,以获取抖音平台的相关数据。例如,我们可以使用该库中的方法来获取指定用户的信息,包括用户ID、昵称、粉丝数量等。我们也可以使用它来搜索指定关键词的视频,获取热门话题的榜单等。 这个库的优点之一是它很容易上手,且具有良好的文档和示例代码。它提供了丰富的功能和选项,可以帮助我们轻松地与抖音平台进行交互。此外,它还支持多种查询参数和过滤条件,例如按时间范围、按用户ID等进行搜索和过滤。 然而,需要注意的是,使用该库进行API调用需要有相应的抖音开发者账号和权限。这意味着,我们需要在抖音开发者平台上注册一个账号,并获得API访问令牌(Access Token)。只有具备有效的凭证,才能成功地使用ssovit/tiktok-api库来进行API调用。 总而言之,ssovit/tiktok-api是一个方便的Python库,适用于与抖音平台进行交互的开发项目。通过该库,我们可以以编程方式获取抖音平台的数据,实现定制化的应用和分析需求。我们可以根据具体的情况,灵活地利用该库提供的功能,以满足我们的需求。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值