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

使用YouTube Data API v3时遇AttributeError: 'str'对象无'request'属性

解决AttributeError: 'str' object has no attribute 'request'(YouTube Data API v3调用问题)

错误原因

调用googleapiclient.discovery.build()时参数传递错误。build函数的第三个位置参数是用于处理HTTP请求的http对象,你直接传入了API密钥字符串,导致生成的youtube对象内部将该字符串作为HTTP客户端使用,而字符串没有request方法,触发报错。

修正方案

1. 修正build函数调用

必须显式指定developerKey参数传递API密钥,而非直接传位置参数。

2. 区分频道ID与用户名参数

如果传入的是UC开头的频道ID,使用id参数;如果是用户名,才用forUsername参数,避免返回空结果。

修正后的完整代码

from googleapiclient.discovery import build

# 替换为你的实际API密钥
API_KEY = "your_real_api_key"
# 替换为目标频道ID(UCxxx格式)或用户名
CHANNEL_TARGET = "your_target_channel_id_or_username"

# 正确构建YouTube API客户端
youtube = build("youtube", "v3", developerKey=API_KEY)

def get_channel_stats(youtube, channel_identifier):
    # 根据传入的类型选择对应参数
    request_params = {
        "part": "snippet,contentDetails,statistics"
    }
    if channel_identifier.startswith("UC"):
        request_params["id"] = channel_identifier
    else:
        request_params["forUsername"] = channel_identifier
    
    request = youtube.channels().list(**request_params)
    response = request.execute()
    return response

# 调用函数并打印结果
channel_stats = get_channel_stats(youtube, CHANNEL_TARGET)
print(channel_stats)

额外注意事项

  • 确保Google Cloud控制台中已启用YouTube Data API v3,且API密钥未被限制或超出配额。
  • 若仍有问题,检查API密钥是否正确,以及目标频道是否公开可访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:25:25