所以我尝试使用youtube api创建一个oauth连接但是我在解码响应方面遇到了问题。我的问题在这里:
public function getCallbackUrl($code)
{
// Grab the returned code and extract the access token.
$this->params = [
'code' => $code,
'client_id' => '#####',
'client_secret' => '####',
'redirect_uri' => '######',
'grant_type' => 'authorization_code'
];
// Get access token
$command = 'curl --data "' . http_build_query($this->params) . '" https://accounts.google.com/o/oauth2/token';
exec($command, $resultToken);
$resultToken = json_decode($resultToken[0]);
在我执行exec $resultToken
后返回如下:
array(5) { [0]=> string(1) "{" [1]=> string(93) " "access_token" : "###########"," [2]=> string(26) " "token_type" : "Bearer"," [3]=> string(21) " "expires_in" : 3599" [4]=> string(1) "}" }
但是当我尝试使用json_decode获取数组时:$resultToken = json_decode($resultToken[0]);
我得到了一个结果NULL
有谁可以向我解释为什么请?欢迎任何帮助,谢谢你的时间!
var_dump($resultToken[0]) = NULL;
答案 0 :(得分:0)
您正在尝试解码无效JSON的值。验证您的API请求是否返回了正确的响应。来自the documentation:
如果无法解码json或者编码数据的深度超过递归限制,则返回NULL。
在旁注中,您正在使用系统调用来调用cURL。请考虑使用原生PHP cURL extension或proper library。