我将更新@Paolo 令人难以置信的答案。就我而言,我试图使用Playlist.list
api 获取我的私人视频。我从来没有见过像 youtube 的 api 那样记录不充分、笨拙和 CONVOLUTED 的 api。
背景:我有一个主要的 google 帐户,我的 youtube api 凭据绑定到该帐户(没有 youtube 品牌帐户的 google 开发人员帐户),但想获取我的 youtube 帐户(品牌帐户)的私人播放列表(和视频) . mine=true
, key
, channelId
, onBehalfOfContentOwner
, 和onBehalfOfContentOwnerChannel
所有对我都没有用。我得到了公共播放列表或这些参数的各种组合和值的 api 错误。
最后,这些是我运行节点脚本以从我的品牌帐户获取私人视频的步骤:
- 转到https://console.developers.google.com/获取您的主要 Google 帐户。
- 在侧边栏中,转到 APIs & Services,然后转到 Credentials
- 在顶部,点击 +Create Credentials,然后点击 Service account
- 在服务帐户详细信息下,输入任何名称,然后单击创建并继续
- 在“授予此服务帐户对项目的访问权限”下,单击继续
- 在“授予用户访问此服务帐户的权限”下,点击完成
- 在加载的主凭据页面上,单击服务帐户下新创建的服务帐户
- 在选项卡中,单击键
- 单击添加密钥按钮,然后单击创建新密钥
- 保留JSON,然后点击创建
- 将文件保存为 nodejs 项目根目录中的 client-key.json
- 转到https://developers.google.com/oauthplayground
- 滚动到范围底部并选择 YouTube Data API v3 v3,然后选择
https://www.googleapis.com/auth/youtube
和https://www.googleapis.com/auth/youtube.readonly
。
- 在弹出的窗口中,点击您的 youtube(品牌)帐户,然后允许
- 在下一步中,单击交换令牌的授权代码
- 复制访问令牌
- 返回到您的节点脚本并像这样使用:
const auth = new google.auth.GoogleAuth({
keyFile: "client-key.json",
scopes: [
"https://www.googleapis.com/auth/youtube",
"https://www.googleapis.com/auth/youtube.force-ssl",
"https://www.googleapis.com/auth/youtube.readonly",
"https://www.googleapis.com/auth/youtubepartner",
"https://www.googleapis.com/auth/youtubepartner-channel-audit",
],
})
const authClient = await auth.getClient()
google.options({ auth: authClient })
const youtube = google.youtube("v3")
const token = "your token here"
const results = await youtube.playlists.list({
part: [
"snippet",
"id",
"contentDetails",
"status",
"localizations",
"status",
],
mine: true,
auth: token,
oauth_token: token,
maxResults: 50,
})
请注意mine: true
,令牌必须传递给 BOTHauth
和oauth_token
,但不能传递给key
。如果缺少任何一个参数,则调用将失败。(为什么?不知道。请告诉我。)此外,您必须在操场上不断更新您的访问令牌过期后。
现在,说了这么多,我鼓励你给我找一个比 youtube api 更糟糕的 api。我的猜测是,你很难找到一个比这更荒谬的人。
PS 我相信在此之前还需要做一些额外的事情,比如启用 youtube api 并在 OAUTH 同意屏幕上做一些事情,但我对这件事感到筋疲力尽,无法继续。希望 Google 控制台 UX 足以指导您完成这些步骤,但坦率地说,我对此表示怀疑。
希望这会有所帮助并祝您好运,因为您可能确实需要它。