抖音验证签名和接口含中文签名,需要在发送端加上utf8编码

utf8 · 浏览次数 : 0

小编点评

总结: 本篇文档主要讨论了抖音验签和抖音异步通知回调验签的问题,以及如何解决中文参数乱码导致的验签错误。文档中提供了一些关键信息和建议,以帮助开发者正确实现验签功能。 1. **验签的重要性**: - 验签是确保数据完整性和安全性的重要步骤。 - 对整个接收的字符串进行验签,而不是部分数据。 2. **解决中文参数问题**: - 使用UTF-8编码处理中文参数,以避免乱码问题。 - 确保在验签过程中使用原始的HTTP请求body数据。 3. **Java语言中的验签问题**: - 在Java语言中,回调接口需要用字符串接收参数,避免使用Bean接收。 - 不要使用readLine函数读取网络包,因为它可能会导致验签失败。 4. **验签代码示例**: - 提供了一个Java方法示例,用于POST请求和验签。 - 示例中包含了设置Content-Type和添加授权头的代码。 5. **其他注意事项**: - 应答时间戳和应答随机串应从HTTP头中获取。 - 验签时应确保接收到的请求包原始内容。 总的来说,正确实现抖音验签和异步通知回调验签的关键在于对整个字符串进行完整的验签,同时处理好中文参数和编码问题。遵循文档中的建议和方法,可以有效地解决验签错误,确保应用程序的安全性。

正文

抖音验证签名和接口含中文签名,需要在发送端加上utf8编码

抖音验签和抖音异步通知回调验签解决:是对整个接收的字符串做验签,而不是部分数据做验签
解决中文参数问题,否则中文乱码报验签错误

 

签名算法
https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/server/signature-algorithm/
请注意使用原生的request body中的内容进行验签,避免因框架解析导致字段顺序变化。
(重要) 验签时需要接收原始的 http request body 数据,并不要进行任何处理。保证原始的 body 数据,作为字符串参与验签。如果是 JAVA 语言,
回调接口需要用字符串接收,不要用 Bean 接收,Bean 接收参数会乱序导致验签不过。
在读取网络包的时候如果使用了readLine函数则可能导致验签通不过,因为readLine默认会在每次读取的时候在行位append '\n'字符。


## 原因1: 抖音异步通知回调验签解决-230607-是对整个接收的字符串做验签,而不是部分数据做验签
签名问题:请提供参与签名的全部参数,提供签名计算代码。
验签问题:请提供接收到的平台请求包原始内容,提供验签代码。
你们验证签名用的reqbody搞错了吧
你们是不是把内部的那个msg搞出来当reqbody了
好的,谢谢。原先担保支付验证签名的是取的msg
[捂脸]
文档理解歧义了



应答时间戳
从应答 HTTP 头Byte-Timestamp中获取应答时间戳。 byte-timestamp
应答随机串
从应答 HTTP 头Byte-Nonce-Str中获取应答随机串。 byte-nonce-str
应答报文主体
应答中的报文主体(response body)。

第二步:获取应答签名
应答签名值通过 HTTP 头Byte-Signature传递 byte-signature

 

##原因2:
//核心代码,解决中文参数问题,否则中文乱码报验签错误。
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);

application/json 修改为: application/json;charset=UTF-8

public final static String APPLICATION_JSON_VALUE = "application/json";
public final static String APPLICATION_JSON_UTF8_VALUE = "application/json;charset=UTF-8";

public static String doPostForJson(String url, String json,String byteAuthorization) {
        RestTemplate restTemplate = new RestTemplate();

        logger.info("restTemplate invoke post method. url:[{}], json:[{}],byteAuthorization=[{}]", url, json,byteAuthorization);
        long startTime = System.currentTimeMillis();
        String result = "";

        HttpHeaders headers = new HttpHeaders();
//        headers.setContentType(MediaType.APPLICATION_JSON); //APPLICATION_JSON_UTF8_VALUE
        //核心代码,解决中文参数问题
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        headers.add("Byte-Authorization",byteAuthorization);
        //核心代码
        ArrayList<MediaType> accepts = new ArrayList<>();
        accepts.add(new MediaType("application","json", Charset.forName("UTF-8")));
        headers.setAccept(accepts);

        HttpEntity<String> request = new HttpEntity<>(json, headers);
        result = restTemplate.postForEntity(url,request,String.class).getBody();


        logger.info("restTemplate invoke [{}] consume time is,[{}] ms.", url, System.currentTimeMillis() - startTime);
        logger.info("restTemplate invoke post method. result:[{}]", result);
        return result;
    }

 

与抖音验证签名和接口含中文签名,需要在发送端加上utf8编码相似的内容:

抖音验证签名和接口含中文签名,需要在发送端加上utf8编码

抖音验证签名和接口含中文签名,需要在发送端加上utf8编码 抖音验签和抖音异步通知回调验签解决:是对整个接收的字符串做验签,而不是部分数据做验签解决中文参数问题,否则中文乱码报验签错误 签名算法https://developer.open-douyin.com/docs/resource/zh-CN

抖音面试:说说延迟任务的调度算法?

Netty 框架是以性能著称的框架,因此在它的框架中使用了大量提升性能的机制,例如 Netty 用于实现延迟队列的时间轮调度算法就是一个典型的例子。使用时间轮调度算法可以实现海量任务新增和取消任务的时间度为 O(1),那么什么是时间轮调度算法呢?接下来我们一起来看。 1.延迟任务实现 在 Netty

异构数据源同步之数据同步 → datax 改造,有点意思

开心一刻 去年在抖音里谈了个少妇,骗了我 9 万 后来我发现了,她怕我报警 她把她表妹介绍给我 然后她表妹又骗了我 7 万 DataX DataX 是什么,有什么用,怎么用 不做介绍,大家自行去官网(DataX)看,Gitee 上也有(DataX) 你们别不服,我这是为了逼迫你们去自学,是为了你们好

[转帖]抖音2023最火英文短句

1.I really like being alone, and I'm really afraid of being alone. 我真的喜欢独处,也真的害怕孤独。 2.The city is full of flowers and 3000 lights for you. 为你花开满城,为你灯明

使用rem、动态vh自适应移动端

前言 这是我的 模仿抖音 系列文章的第六篇 第一篇:200行代码实现类似Swiper.js的轮播组件 第二篇:实现抖音 “视频无限滑动“效果 第三篇:Vue 路由使用介绍以及添加转场动画 第四篇:Vue 有条件路由缓存,就像传统新闻网站一样 第五篇:Github Actions 部署 Pages、同

贝塞尔曲线的切线及其AABB问题

贝塞尔曲线的切线及其AABB问题 先聊点别的 2023 年抖音上居然还看到很多前端培训 各种直播前端教学(虽然是录播)但看起来还是有大批前往前端卷啊 说明了什么,很可能说明其它行业更难卷 这不是行业不景气业务下降了么.. 互联网行业是肉眼可见的不景气 业务量也下降了,业务相关的工作也变的不再饱和 我

重磅来袭!MoneyPrinterPlus一键发布短视频到视频号,抖音,快手,小红书上线了

MoneyPrinterPlus开源有一段时间了,已经实现了批量短视频混剪,一键生成短视频等功能。 有些小伙伴说了,我批量生成的短视频能不能一键上传到视频号,抖音,快手,小红书这些视频平台呢?答案是必须可以。 下面上干货。 软件准备 当然,前提条件就是你需要下载MoneyPrinterPlus软件啦

PHP转Go系列 | ThinkPHP与Gin框架之OpenApi授权设计实践

工作中只要接触过第三方开放平台的都离不开 OpenApi,几乎各大平台都会有自己的 OpenApi 比如微信、淘宝、京东、抖音等。在 OpenApi 对接的过程中最首要的环节就是授权,获取到平台的授权 Token 至关重要。

MoneyPrinterPlus:AI自动短视频生成工具,详细使用教程

MoneyPrinterPlus是一款使用AI大模型技术,一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上的轻松赚钱工具。 之前有出过一期基本的介绍,但是后台收到有些小伙伴说,不知道如何使用。 今天我将会手把手的详细介绍如何使用MoneyPrinterPlus

MoneyPrinterPlus:AI自动短视频生成工具,赚钱从来没有这么容易过

MoneyPrinterPlus使用AI大模型技术,一键批量生成各类短视频。一键混剪短视频,批量生成短视频不是梦。自动把视频发布到抖音,快手,小红书,视频号上。