1、B站广告投放签名算法
描述:
1. 把所有查询参数的值和密钥放入一个集合;
2. 把这些值转化为字符串, 然后排序;
3. 排序方式是字符串排序, 首先比较首字母的编码(比如 ascii 码)顺序, 如果
相同, 就继续比较第二个字母的编码顺序, 以此类推, 大多数语言都有内建
的字符串排序函数;
4. 把这些字符串用"&"连接成一个字符串;
5. 计算这个字符串的 md5 值, 得到的结果即为签名。
B站广告投放签名算法示例:
参数:
1. advertiser_id = ‘3’
2. start_time = ‘2021-01-01'
3. end_time = ‘2021-01-02'
4. page_no = 1
5. page_size = 10
6. ts = 1611905162
7. sign = ‘683f275e-a4d8-4621-a7db-72ace90aefa6'
计算过程:
md5(‘1&10&1611905162&2021-01-01&2021-01-02&3&683f275e-a4d8-4621-a7db-72ace90aefa6’) = ‘26dd3f53a34cdef288d6152f9d72ef16'
代码示例:
Java 代码示例:
import org.apache.commons.codec.digest.DigestUtils;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class Sign {
public String sign(List params) {
return DigestUtils.md5Hex(params.stream()
.filter(Objects::nonNull)
.map(Object::toString)
.sorted()
.collect(Collectors.joining("&")));
}
}
Python 代码示例:
from hashlib import md5
def sign(*args):
str_args = [str(x) for x in args if x is not None]
str_args.sort()
str_sign = bytes('&'.join(str_args), 'utf8')
m = md5()
m.update(str_sign)
return m.hexdigest()
2、Q&A
B站广告投放运营联调测试流程:
1. 将配置好 trackid 的落地页链接填写至投放平台创意落地页下(使用建站工具客户直接使用建站工具页面)
示例:https://www.bilibili.com?track_id=__TRACKID__
2. 客户技术同学完成回调线索和 B 站请求接口的配置(B站广告投放使用建站工具落地页对接的客户需要像运营同学申请密钥一同回调,外链落地页客户不需要申请)
3. 运营同学通过预览广告形式,联调测试通路是否正常回调
4. 联调后,运营同学告知 B 站产品同学查询是否收到线索回传
对广告主有什么价值?
1.B站广告投放关注有效线索成本的广告主将可以在投放后台实时直观了解有效转化数据,便于优化投放策略;
2. 线索实时回传至广告主的 CRM,免去繁琐的线下导数录入成本;
3. 后续可使用 oCPX 直接以有效线索为目标进行优化,保障有效线索成本。
不使用 Bilibili 建站工具的表单能力可以对接有效线索吗?
1. 可以