PHP代码实现百度文心一言API的接口安全验证

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 函数可以自动完成签名操作,方便我们调用。

后端开发标签