当特定事件(Event)发生时,开放平台可以通过HTTPS POST的方式将事件推送到开发者配置好的回调地址,开发者无须通过查询即可第一时间获取到事件的变化。
配置消息推送(Webhook)地址#
在应用详情页点击Webhooks模块的“编辑”按钮,填写Webhooks消息回调地址,鼠标失焦时,开放平台会向你配置的地址发送一个application/json格式的POST请求,该请求用于校验消息回调地址的正确性,校验成功后,点击“提交”按钮,完成应用的Webhooks配置。
回调地址校验#
开放平台发送的验证请求示例:
json
{
"event": "verify_webhooks",
"content": {
"data": 1371848576
},
"timestamp": "2021-01-01 12:01:01"
}当你收到开放平台 POST 请求,并且事件(event)为verify_webhooks时,你需要解析出data值,并将其作为响应:
json
{
"data": 1371848576
}回调确认#
在业务请求中,收到开放平台发送的回调消息过后,开发者返回http状态码为2xx的post响应,开放平台即视为该请求已送达。如果规定时间内未收到回复,将触发重试机制。
重试机制#
开放平台每次发送POST请求会与开发者回调地址建立5s的连接,超时自动断开。若推送Webhooks消息失败则重试,最多推送3次。在这类情况下,你的服务器应进行去重操作。
消息来源验证#
我们使用 SHA1 签名来签署所有要推送的消息,并在请求的 x-bilibili-signature 标头中添加签名。
如要验证消息来源:
- 将你收到的消息体和你应用的应用密钥(secret+request body)生成 SHA1 签名。接收开发平台消息的结构体字段顺序需与上面发送的消息格式字段顺序保持一致,否则签名结果会不一致。
- 将你的签名与
x-bilibili-signature标头中的签名进行对比。如果签名一致,则表示消息来源真实有效。
消息结构#
所有的消息格式统一为如下结构:
json
{
"event": "",
"content": {},
"timestamp":""
}