You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP编写获取YouTube频道视频列表函数返回空数组求助

解决YouTube API返回空数组的问题

我来帮你排查这个问题,你的channels_list()函数返回空数组大概率是几个常见问题导致的,咱们一步步来解决:

1. 移除URL中的多余单引号

你的请求URL里把API密钥和频道ID用单引号括起来了,这会导致Google API无法正确识别这些参数——单引号会被当作参数值的一部分发送,直接导致请求无效。

把原URL里的:

$json_link="https://www.googleapis.com/youtube/v3/search?key='MY API KEY'&channelId='MY CHANNEL ID'&part=snippet,id&order=date&maxResults=10";

改成:

$json_link="https://www.googleapis.com/youtube/v3/search?key=你的API密钥&channelId=你的频道ID&part=snippet,id&order=date&maxResults=10";

注意直接填写密钥和频道ID,不要加任何引号。

2. 捕获请求错误,排查API响应

你现在的代码没有处理请求失败或API返回错误的情况,导致你看不到问题所在。建议添加错误捕获逻辑,明确知道是请求失败还是API返回了错误信息:

public function channels_list() { 
    $method = $_SERVER['REQUEST_METHOD']; 
    if($method != 'GET') { 
        json_output(400,array('status' => 400,'message' => 'Bad request.')); 
    } else { 
        $data = array(); 
        $json_link="https://www.googleapis.com/youtube/v3/search?key=你的API密钥&channelId=你的频道ID&part=snippet,id&order=date&maxResults=10"; 
        
        // 用cURL替代file_get_contents(更稳定且易调试)
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $json_link);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        $json = curl_exec($ch);
        $curl_error = curl_error($ch);
        curl_close($ch);
        
        if ($curl_error) {
            json_output(500, array('status' => 500, 'message' => '请求失败: ' . $curl_error));
            return;
        }
        
        $response = json_decode($json, true);
        
        // 检查API是否返回错误
        if (isset($response['error'])) {
            $error_msg = $response['error']['message'] ?? '未知API错误';
            json_output(400, array('status' => 400, 'message' => 'API错误: ' . $error_msg));
            return;
        }
        
        // 提取视频列表(如果存在)
        $data = $response['items'] ?? array();
        json_output(200, array('status' => 200, 'data' => $data));
    } 
}

3. 确认API配置是否正确

  • 确保你在Google Cloud控制台中启用了「YouTube Data API v3」,未启用的话API会直接返回权限错误。
  • 检查你的API密钥是否设置了IP限制,如果有,确保你的服务器IP在允许列表内。
  • 确认频道ID正确:频道ID一般是UC开头的字符串,不要把频道的自定义URL(比如@我的频道)当成频道ID,可以在YouTube频道的「设置 > 高级设置」里找到正确的频道ID。

4. 检查服务器环境

有些服务器禁用了allow_url_fopen,导致file_get_contents无法请求外部URL,上面的代码用cURL替代了file_get_contents,兼容性更好,也更容易调试请求问题。

内容的提问来源于stack exchange,提问作者Maddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:42:02