百度云获取AccessToken时返回空值的问题
2023-07-23 05:21
原创
最近我想把百度云TTS应用到我的一个小项目中,但刚上手就遇到一个问题:官方提供的“API在线调试”工具中的获取token的PHP示例代码,复制到本地之后无法正确运行,返回的是空值。原代码是这样的:
class Sample {
public function run() {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://aip.baidubce.com/oauth/2.0/token?client_id=fWPO7I****GZQxwa&client_secret=UVEbsd****9inCy6&grant_type=client_credentials",
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Accept: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
}
$rtn = (new Sample())->run();
print_r($rtn);
经过研究,我找到的解决方法。curl参数里面增加两行代码即可:
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
修改后的代码:
class Sample {
public function run() {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://aip.baidubce.com/oauth/2.0/token?client_id=fWPO7I****GZQxwa&client_secret=UVEbsd****9inCy6&grant_type=client_credentials",
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Accept: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
}
$rtn = (new Sample())->run();
print_r($rtn);
修改之后问题得到解决。
我发现不止获取token的demo代码有这个问题,其它代码都有这个问题,我很疑惑难道官方写的代码没有测试一下?我有点怀疑这是不是和我的环境配置或者PHP版本有关,是不是在某种配置或版本中可以省略那两句代码?好在问题已经解决了,有空再研究研究吧。