PHP开发中如何实现百度文心一言API的访问鉴权?

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

百度文心一言API是一个随机语录接口,其来源于文心雕龙中的名言,包含动画、漫画、游戏、小说等各方面的句子,用于提升用户体验。用户可以通过访问API接口,获得一条随机的语录。

2.如何访问百度文心一言API?

2.1 API请求地址和参数说明

百度文心一言API请求地址:

https://v1.hitokoto.cn/

百度文心一言API请求参数如下:

c:分类,可选参数(a - 动画,b - 漫画,c - 游戏,d - 小说,e - 原创,f - 来自网络)。

encode:返回的字符集,可选参数(json - JSON格式,text - 纯文本格式,jsonp - JSONP格式)。

charset:返回的字符编码,可选参数(utf-8 - UTF-8编码,gbk - GBK编码,big5 - Big5编码)。

callback:JSONP格式回调函数名,可选参数。

2.2 API访问鉴权

在使用百度文心一言API时,需要进行访问鉴权,以保证安全性。具体方式如下:

首先,在https://hitokoto.cn/api中找到“请求地址”和“请求参数”,例如,请求地址为“https://v1.hitokoto.cn/”,请求参数为“c、encode、charset、callback”。

然后,将请求地址和请求参数组成请求URL。

接下来,用您的app_secret与请求URL进行HMAC-SHA1加密,生成签名。

最后,将生成的签名作为请求头(Authorization)发送请求。

具体的PHP代码如下:

/**

* 签名生成函数

* @param $app_secret应用秘钥

* @param $url API请求URL

*/

function sign($app_secret, $url)

{

$url = parse_url($url);

$params = array();

parse_str($url['query'], $params); //获取参数

ksort($params); //参数按字典排序

$paramString = http_build_query($params); //将参数拼接成字符串

$stringToSign = $url['path'].":".$paramString;

$signature = base64_encode(hash_hmac('sha1', $stringToSign, $app_secret, true)); //使用HMAC-SHA1进行加密

return $signature;

}

// API请求地址和请求参数

$url = "https://v1.hitokoto.cn/?encode=json";

$app_secret = "your_app_secret"; //应用秘钥,需要替换成您自己的秘钥

$authorization = "hitokoto ".sign($app_secret, $url); //请求头Authorization

$headers = array("Authorization: ".$authorization);

// 使用curl发送请求

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);

curl_close($curl);

echo $response; //输出API返回结果

2.3 API返回结果

百度文心一言API返回的结果包含以下字段:

id:句子的唯一ID。

hitokoto:返回的句子内容。

type:句子的类型。

from:句子的出处。

creator:句子的作者。

created_at:句子的创建时间。

3.实战:PHP代码调用百度文心一言API

在PHP应用中,我们可以通过curl函数访问百度文心一言API,具体代码如下:

$url = "https://v1.hitokoto.cn/?encode=json";

$app_secret = "your_app_secret"; //应用秘钥,需要替换成您自己的秘钥

$authorization = "hitokoto ".sign($app_secret, $url); //请求头Authorization

$headers = array("Authorization: ".$authorization);

// 使用curl发送请求

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);

curl_close($curl);

$result = json_decode($response, true); //转换为数组

if($result && isset($result['hitokoto'])){

echo "".$result['hitokoto']."";

}else{

echo "获取句子失败";

}

3.1 完整代码

完整代码如下:

/**

* 签名生成函数

* @param $app_secret应用秘钥

* @param $url API请求URL

*/

function sign($app_secret, $url)

{

$url = parse_url($url);

$params = array();

parse_str($url['query'], $params); //获取参数

ksort($params); //参数按字典排序

$paramString = http_build_query($params); //将参数拼接成字符串

$stringToSign = $url['path'].":".$paramString;

$signature = base64_encode(hash_hmac('sha1', $stringToSign, $app_secret, true)); //使用HMAC-SHA1进行加密

return $signature;

}

$url = "https://v1.hitokoto.cn/?encode=json";

$app_secret = "your_app_secret"; //应用秘钥,需要替换成您自己的秘钥

$authorization = "hitokoto ".sign($app_secret, $url); //请求头Authorization

$headers = array("Authorization: ".$authorization);

// 使用curl发送请求

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);

curl_close($curl);

$result = json_decode($response, true); //转换为数组

if($result && isset($result['hitokoto'])){

echo "".$result['hitokoto']."";

}else{

echo "获取句子失败";

}

4.总结

本文介绍了如何使用PHP实现百度文心一言API的访问鉴权,并调用API获取随机语录。具体而言:

百度文心一言API是一个随机语录的接口,通过访问该接口可以获得一条随机的语录。

在使用百度文心一言API时,需要进行访问鉴权,以确保安全性。

具体的PHP访问鉴权方式是通过HMAC-SHA1算法实现的。

使用curl函数可以方便地调用百度文心一言API。

后端开发标签