-
API接口-提交接口-必读规范
API接口-提交接口-必读规范
接入规范
百度知道一旦通过您的应用接入申请,将会以邮件的形式发送给您以下两个参数:
appkey:应用在百度知道的唯一标识;
securitykey:应用提交时计算签名需使用的安全秘钥;
以上秘钥各站点需要严格保护,不允许泄露,一旦泄露将取消接入资格。
该秘钥在联调环境和线上环境同样适用。
安全参数
百度知道提供的所有提交接口,在请求时都必须携带以下两个安全参数:
参数1:appkey(int类型),在接入时由百度知道分配;
参数2:sign(string类型),签名参数,该值生成方式见以下“签名认证安全算法”说明;
特殊说明:
因百度的网络安全设置,请在所有的提交请求中设置header的Expect项为空,否则提交可能会出现超时现象。
举例:(php下curl的设置方式)
curl_setopt($curl, CURLOPT_HTTPHEADER, array(Expect: ));
编码规范
所有接口涉及的字符,均使用UTF8编码。提交方式均采用POST方式。
返回格式
百度知道提供的所有提交接口,返回格式统一为json格式,且内容如下所示:
{
errno : 0, //操作是否成功,0成功,非0失败,具体原因见errmsg
errmsg : xxx, //操作结果文字描述
data : {}, //部分接口存在该字段,例如回答成功时返回replyid,具体请查看接口说明
}签名认证安全算法
第1步:从当前您正准备要发给百度知道提交接口的POST数据包里,提取questionid参数,如果该参数不存在,用空字符串替代;
第2步:结合审核通过邮件中发送的appkey和securitykey,将以下3个参数组成字符串,中间用&分割;
securitykey&appkey&questionid
第3步:计算上述字符串的MD5值,即为签名的值,如:
sign=MD5(securitykey&appkey&questionid)
【举例】
假设分配给您的appkey为1000,securitykey为8777F555E8C16715EBA5C85341684C58,
您此刻正要调用百度知道的回答提交接口,且已经准备好要发送的POST数据了,数组里有这么几个字段:
appkey
1000
应用标识id
questionid
1238790666
问题标识id
content
这是回答内容
回答内容
app_uid
123
回答用户uid
这时,您计算sign的方式应该是这样的:
$sign = MD5(“8777F555E8C16715EBA5C85341684C58&1000&1238790666”)
【示例代码】
/**
* 根据本次请求内容,动态构建sign参数
* $appKey 百度知道为您分配的appkey
* $securityKey 百度知道为您分配的安全秘钥
* $post 本次您将要发送给百度知道的POST数据,数组格式,UTF8编码
*/
function buildSign($appKey, $securityKey, $post) {
$qid = isset($post[questionid]) ? $post[questionid] : ;
return md5("$securityKey&$appKey&$qid");
}
以上信息是否解决了您的问题您可以进行 问题反馈,我们会在24-72小时内解决您的问题
感谢您的反馈