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

按地理位置搜索YouTube内容的OAuth scope配置及R脚本问题

解决方案

1. 接口权限配置方案

做公开YouTube视频搜索不需要OAuth授权,也不需要配置复杂的scope,使用API密钥即可实现:

  • 登录Google Cloud Console,创建新项目,搜索并启用「YouTube Data API v3」
  • 在「凭据」页面选择「创建凭据」→「API密钥」,保存生成的密钥即可,全程不需要配置OAuth同意屏幕,也不需要申请任何scope权限

注意:YouTube Data API v3有免费配额限制,单项目每日默认配额为10000,每次搜索请求消耗100配额,每日最多可发起100次搜索请求,超出后需要申请提额。

2. 报错原因及修复

你遇到的Error: $ operator is invalid for atomic vectors报错,是因为你试图用$符号提取原子向量(比如字符串、数值向量、未解析的接口返回体)的嵌套字段,属于R基础语法错误。从你的代码截图来看,错误出在接口返回结果解析的步骤:你直接对httr请求返回的response对象用$提取字段,没有先把返回的JSON内容解析为R列表结构。

3. 可直接运行的R脚本示例

先安装依赖包:

install.packages(c("httr", "jsonlite", "dplyr"))

运行搜索代码:

library(httr)
library(jsonlite)
library(dplyr)

# 替换为你自己的API密钥
api_key <- "YOUR_GOOGLE_API_KEY"
# 搜索关键词
search_keyword <- "城市风光"
# 目标城市经纬度,示例为北京坐标,可自行替换为对应城市的经纬度
city_location <- "39.9042,116.4074"
# 搜索范围半径,单位为米,示例为50公里
search_radius <- "50000"

# 发起接口请求
api_response <- GET(
  url = "https://www.googleapis.com/youtube/v3/search",
  query = list(
    part = "snippet",
    q = search_keyword,
    type = "video",
    location = city_location,
    locationRadius = search_radius,
    maxResults = 50,
    key = api_key
  )
)

# 校验请求状态
if (status_code(api_response) != 200) {
  stop("请求失败:", content(api_response)$error$message)
}

# 解析返回内容,只有解析后才能用$提取字段
parsed_result <- content(api_response, as = "parsed")
video_list <- parsed_result$items

# 转换为结构化数据框
video_df <- lapply(video_list, function(item) {
  data.frame(
    视频ID = item$id$videoId,
    视频标题 = item$snippet$title,
    发布时间 = item$snippet$publishedAt,
    频道名称 = item$snippet$channelTitle,
    视频简介 = item$snippet$description,
    stringsAsFactors = FALSE
  )
}) %>% bind_rows()

# 查看结果
head(video_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:09:01