【问题标题】:API YouTube V3 curl phpAPI YouTube V3 卷曲 php
【发布时间】:2026-01-19 01:00:01
【问题描述】:

我尝试使用带有 curl 的 API YouTube V3(我尝试了 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 

如果有人可以帮助我。

【问题讨论】:

  • 你好,我正在尝试做同样的事情,但是我如何获得授权旁边的 $accessToken:Bearer

标签: php curl youtube-api options


【解决方案1】:

这里是有效的代码:

   $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(如果您为应用设置了限制)。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】: