API调用方式
更新时间:2021-06-24
请求
移动APP推送请求URL结构
[GET|POST]
https://push.safe.baidu.com/push/api/open/v1/{method}?{common_query_string}
其中method为请求的方法,根据不同接口而异。
所有请求都包含common_query_string,字段包含:
- appkey:在后台为应用分配的appkey;
- timestamp:请求的时间戳,若与服务器差别很大,请求可能被拒绝;
- sign:请求的签名,生成方式请参考鉴权方式;
请求示例
POST
https://push.safe.baidu.com/push/api/open/v1/message/broadcast?appkey=10001&sign=354e0bbf6a80b07b61bd9637e45b3a32×tamp=1543310683
鉴权方式
移动APP推送会对所有的请求进行权限校验,服务端会根据请求的渠道和数据计算本次请求的签名,并与请求的sign参数进行比对,签名生成流程:
- 将请求方法、请求URL(不包含common_query_string部分)、Post Body、appkey、timestamp、masterkey(后台生成)按照上述顺序进行字符串拼接;
- 将拼接的字符串进行url_encode;
-
再进行md5得到sign值。
sign = MD5(url_encode($http_method$url$post_body$appkey$timestamp$masterkey))
示例
描述 | 说明 |
---|---|
appkey | 10001 |
masterkey | 79b7cdcd14db14e9cb498f1793817d69 |
请求方法 | POST |
请求URL | https://push.safe.baidu.com/push/api/open/v1/message/broadcast |
Post Body | {"message_type":2,"transmission":{"title":"hello","content":"hello world"}} |
timestamp | 1543310683 |
-
将参数排列得到:
POST https://push.safe.baidu.com/push/api/open/v1/message/broadcast{"message_type":2,"transmission":{"title":"hello","content":"hello world"}}10001154331068379b7cdcd14db14e9cb498f1793817d69
-
进行url_encode得到:
POST https%3A%2F%2Fpush.safe.baidu.com%2Fpush%2Fapi%2Fopen%2Fv1%2Fmessage%2Fbroadcast%7B%22message_type%22%3A2%2C%22transmission%22%3A%7B%22title%22%3A%22hello%22%2C%22content%22%3A%22hello+world%22%7D%7D10001154331068379b7cdcd14db14e9cb498f1793817d69
-
计算md5
MD5 (POSThttps%3A%2F%2Fpush.safe.baidu.com%2Fpush%2Fapi%2Fopen%2Fv1%2Fmessage%2Fbroadcast%7B%22message_type%22%3A2%2C%22transmission%22%3A%7B%22title%22%3A%22hello%22%2C%22content%22%3A%22hello+world%22%7D%7D10001154331068379b7cdcd14db14e9cb498f1793817d69) sign = 354e0bbf6a80b07b61bd9637e45b3a32
-
发起请求
curl -H "Content-Type: application/json" -XPOST "https://push.safe.baidu.com/push/api/open/v1/message/broadcast?appkey=10001&sign=354e0bbf6a80b07b61bd9637e45b3a32×tamp=1543310683" -d '{"message_type":2,"transmission":{"title":"hello","content":"hello world"}}'
返回参数
每次请求都会返回以下公共参数
参数 | 类型 | 说明 |
---|---|---|
request_id | int64 | 用于异常排查 |
code | int | 错误码 |
message | string | 错误说明 |
此外,如果接口需要返回数据,会包含在result字段中
参数 | 类型 | 说明 |
---|---|---|
result | json object | 返回的数据,格式因接口而异 |
全局错误码
HTTP Status Code | Code | 说明 |
---|---|---|
200 | 0 | 成功 |
400 | 400 | 参数错误 错误说明见返回的message字段 |
401 | 401 | 签名校验失败 请检查appkey、masterkey、签名算法等是否正确 |
404 | - | 路由错误 请检查请求URL、HTTP Method等是否正确 |
500 | - | 服务器内部错误,请稍候重试 |
200 | 10000 | push_id不存在 |