当我尝试解码来自youtube api的响应时,json_decode返回null

时间:2016-09-08 12:40:39

标签: php arrays json youtube-api youtube-data-api

所以我尝试使用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;

1 个答案:

答案 0 :(得分:0)

您正在尝试解码无效JSON的值。验证您的API请求是否返回了正确的响应。来自the documentation

  

如果无法解码json或者编码数据的深度超过递归限制,则返回NULL。

在旁注中,您正在使用系统调用来调用cURL。请考虑使用原生PHP cURL extensionproper library