PHP代码实现百度文心一言API接口的请求签名和验签

1. 什么是百度文心一言API接口

百度文心一言API接口指的是一种可以获取一些励志、情感等文本的API接口,用户可以通过请求该API接口获取到一些包含励志、情感等文本的json格式的数据,可以应用在个人博客、社交网络、微信小程序等各种需求中。

2. 请求签名与验签

2.1 请求签名

在请求该API接口时,需要对请求参数进行签名,以保证接口请求的安全性。下面是PHP代码实现百度文心一言API接口的请求签名的示例代码:

function sign($params, $appSecret) {

ksort($params);

$arr = [];

foreach($params as $key => $value) {

array_push($arr, $key."=".$value);

}

$str = implode("&", $arr);

$sig = md5($str.$appSecret);

return strtoupper($sig);

}

上述代码实现了将请求参数按照字典序进行排序,然后拼接成字符串并进行MD5加密,接着将加密后的字符串转为大写字母,最终得到签名字符串。

2.2 验签

接口请求方在得到接口返回结果后,需要对返回结果进行验签,以确保接口返回的数据是接口服务器返回的合法数据。下面是PHP代码实现百度文心一言API接口的验签的示例代码:

function checkSign($data, $appSecret) {

$sig = $data["sig"];

unset($data["sig"]);

ksort($data);

$arr = [];

foreach($data as $key => $value) {

array_push($arr, $key."=".$value);

}

$str = implode("&", $arr);

$checkSig = md5($str.$appSecret);

return strtoupper($sig) === strtoupper($checkSig);

}

上述代码实现了将返回结果的sig参数取出,然后将其他参数按照字典序排序后,拼接成字符串并进行MD5加密,最终将加密后的字符串转为大写字母,与sig参数进行比较,判断是否验签通过。

3. PHP代码实现百度文心一言API接口的请求签名和验签

下面是PHP代码实现百度文心一言API接口的请求签名和验签的完整代码:

function sign($params, $appSecret) {

ksort($params);

$arr = [];

foreach($params as $key => $value) {

array_push($arr, $key."=".$value);

}

$str = implode("&", $arr);

$sig = md5($str.$appSecret);

return strtoupper($sig);

}

function checkSign($data, $appSecret) {

$sig = $data["sig"];

unset($data["sig"]);

ksort($data);

$arr = [];

foreach($data as $key => $value) {

array_push($arr, $key."=".$value);

}

$str = implode("&", $arr);

$checkSig = md5($str.$appSecret);

return strtoupper($sig) === strtoupper($checkSig);

}

$appKey = "your_app_key";

$appSecret = "your_app_secret";

$url = "http://api.xiaoi.com/robot/ask.do";

$params = [

"platform" => "custom",

"userId" => "test",

"question" => "你好",

"type" => "0",

"appKey" => $appKey,

"timestamp" => time(),

];

$params["sig"] = sign($params, $appSecret);

$data = file_get_contents($url."?".http_build_query($params));

$data = json_decode($data, true);

if(checkSign($data, $appSecret)) {

// 验签通过,处理接口返回结果

} else {

// 验签不通过,忽略接口返回结果

}

上述代码中,$params数组是请求参数,其中包含了appKey、timestamp和sig三个参数。appKey是在创建机器人时分配的,timestamp是当前时间戳(秒),sig是请求参数的签名。sign()函数实现了请求签名,checkSign()函数实现了验签。file_get_contents()函数发送HTTP GET请求,将接口返回的结果赋值给$data变量,然后使用json_decode()函数解析接口返回的json格式数据。

4. 总结

本文介绍了PHP代码实现百度文心一言API接口的请求签名和验签的实现方法。请求签名和验签都是为了保证接口的安全性,防止数据被篡改或者伪造。这两个过程都需要对参数进行排序、拼接和加密等操作,需要仔细编写代码,并严格按照接口文档要求实现。通过本文的介绍,读者可以掌握PHP代码实现百度文心一言API接口的请求签名和验签的方法,可以在实际应用中使用该API接口,提高应用的用户体验。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签