2016-09-08 93 views
1

因此,我嘗試創建與YouTube API的oauth連接,但我有解碼響應的問題。我的問題是在這裏:json_decode返回null當我嘗試解碼來自YouTube的api的響應

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]); 

我做高管$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

var_dump($ resultToken [0])是什麼? –

+0

是的,向我們展示響應主體。 –

+2

'$ resultToken [0]'是無效的JSON。檢查你的迴應。另外考慮使用[PHP cURL擴展名](https://php.net/curl),而不是直接使用系統調用。 – Elias

回答

0

您試圖解碼無效的JSON值。驗證您的API請求是否返回了正確的響應。 From the documentation

如果json無法解碼或者編碼數據比遞歸限制更深,則返回NULL。

請注意,您正在使用系統調用來調用cURL。考慮使用本機PHP cURL extensionproper library