web技术

百度云获取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版本有关,是不是在某种配置或版本中可以省略那两句代码?好在问题已经解决了,有空再研究研究吧。

推荐文章
这篇文章我讲一下腾讯云TTS里面的一些坑,以及解决的方法。我们刚开始使用腾...
作者在使用百度云开发PHP项目时,遇到一个unsupported_grant_type错误。经研...
推荐专题
如何自己建网站?建网站难不难?其实建网站说难不难,说容易也并不容易,难...
本专题精心收集整理了多种HTML+CSS+JS轮播图实现方案,带详细代码和讲解,正...