0

我尝试将 API YouTube V3 与 curl 一起使用(我尝试 php,没有结果)

所以我可以将我的帐户与 api 连接起来,然后收集 accessToken。

散文部分。现在我想使用她,我继续阅读文档https://developers.google.com/youtube/v3/docs/channels/list

我想用这个地址在我的频道上获取信息:

GET https://www.googleapis.com/youtube/v3/channels?part=statistics&mine=true&key={YOUR_API_KEY}

Authorization:  Bearer ya29.AHES6ZRgKyWjPn_gwkMGDuI5N1Yzu4MmUPXTGybTRbox2zLatw
X-JavaScript-User-Agent:  Google APIs Explorer

所以我使用这个代码:

$option = array(
        'part' => 'statistics', 
        'mine' => 'true',
        'key' => 'AIzaSyBmykey_xZhOR22u9txLyU6Yc'
    );
$url = "https://www.googleapis.com/youtube/v3/channels"
    $curl = curl_init($url);

    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $option);
    $curlheader[0] = "Authorization: Bearer " . $accessToken;
    curl_setopt($curl, CURLOPT_HTTPHEADER, $curlheader);

    $json_response = curl_exec($curl);

    curl_close($curl);

    $responseObj = json_decode($json_response);

但我有错误(没有结果)也许参数上的错误如下:

?part=statistics&mine=true&key={YOUR_API_KEY} with curl 

如果有人可以帮助我。

4

3 回答 3

3

这是有效的代码:

   $option = array(
      'part' => 'statistics', 
      'mine' => 'true',
      'key' => 'AIzaSyBmykey_xZhOR22u9txLyU6Yc'
   );
   $url = "https://www.googleapis.com/youtube/v3/channels?".http_build_query($option, 'a', '&');
   $curl = curl_init($url);

   curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
   curl_setopt($curl, CURLOPT_REFERER, "http://www.exemple.com");

   $json_response = curl_exec($curl);

   curl_close($curl);

   $responseObj = json_decode($json_response);

神奇的是删除 auth 和 header 并使用 referer(如果你为你的应用设置了限制)。

于 2017-05-05T07:14:28.297 回答
1

首先,您在这一行有一个语法错误:

$url = "https://www.googleapis.com/youtube/v3/channels"

它应该是:

$url = "https://www.googleapis.com/youtube/v3/channels";

现在,如果解决这个问题没有帮助,您就是在告诉 CURL 同时执行 GET 和 POST。像这样 GET 可能会更好:

$option = array(
        'part' => 'statistics', 
        'mine' => 'true',
        'key' => 'AIzaSyBmykey_xZhOR22u9txLyU6Yc'
    );
$url = "https://www.googleapis.com/youtube/v3/channels?".http_build_query($option, 'a', '&');
$curl = curl_init($url);

curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
$curlheader[0] = "Authorization: Bearer " . $accessToken;
curl_setopt($curl, CURLOPT_HTTPHEADER, $curlheader);

$json_response = curl_exec($curl);

curl_close($curl);

$responseObj = json_decode($json_response);
于 2013-05-05T22:03:45.603 回答
0

我有同样的问题,直到我将它上传到我的服务器(而不是我的本地)然后它才开始工作。从 localhost 访问时,API 密钥不起作用。

于 2014-06-01T10:39:43.880 回答