1. 引言
百度文心一言是一个提供名人名言以及古句诗文的API接口,我们可以通过接口获取到一句优美、深刻的语句来装点我们自己的网站,为我们的网站增添文艺气息。然而,网络环境不安全,我们需要对接口做一些安全验证才能够有效保护我们的网站。
2. 安全验证
为了保证接口的安全性,我们需要添加一些数据签名来验证请求是不是合法的。基本流程如下:
1. 将要发送给服务端的所有参数按照参数名的字典序排序;
2. 拼接成“参数名=参数值”的格式,再以“&”符号连接起来;
3. 将拼接好的字符串再拼接上accessKeySecret参数值,并进行md5计算,得到签名(sign);
4. 将签名作为参数添加到请求参数中。
2.1 封装代码
我们可以通过PHP代码来实现这个逻辑,以下是一个封装好的函数 `baidu_heart_words`,其中 `$params` 是请求参数,`$accessKey` 和 `$accessKeySecret` 是接口的 Access Key 和 Access Secret。
/**
* 百度文心一言 API
*
* @param array $params 请求参数
* @param string $accessKey Access Key
* @param string $accessKeySecret Access Secret
*
* @return string 返回一句话
*/
function baidu_heart_words($params, $accessKey, $accessKeySecret)
{
// 参数名的字典序排序
ksort($params);
// 按照“参数名=参数值”的格式拼接成字符串
$query = http_build_query($params);
// 拼接accessKeySecret
$query .= $accessKeySecret;
// 计算md5值
$sign = md5($query);
// 将签名添加到请求参数中
$params['sign'] = $sign;
// 发送请求
$uri = 'https://api.xiaohuwei.cn/baidu_heart_words?' . http_build_query($params);
return file_get_contents($uri);
}
2.2 使用方法
在使用这个封装函数时,只需要将请求参数、Access Key 和 Access Secret 传入即可,函数返回一个文心一言的字符串,可以用于展示在我们自己的网站上。以下是一个例子:
$params = [
'type' => '3', // 名人名言
'c' => 'this-is-test',
'f' => 'json',
'temperature' => '0.6',
];
$baidu_heart_words = baidu_heart_words($params, 'accessKey', 'accessKeySecret');
echo $baidu_heart_words;
以上代码会输出一个 JSON 格式的字符串,类似于下面的结果:
{
"errno": 0,
"errmsg": "success",
"data": {
"id": "Dw3uaPUfoH",
"source": "四川",
"author": "鲁迅",
"content": "麦田里的守望者——亲爱的克劳硕先生。"
}
}
3. 总结
在使用百度文心一言API接口时,我们需要注意安全性。通过上述安全验证流程,我们可以有效地保证接口的安全性,防止非法请求和攻击。封装好的 PHP 函数可以自动完成签名操作,方便我们调用。