首页 > 解决方案 > YouTube 数据 API 未返回某些帐户的频道数据

问题描述

我正在尝试从以下 YouTube 数据 API 端点获取频道用户数据: 频道:使用此 URL 列出:

https://www.googleapis.com/youtube/v3/channels?part=id%2Csnippet&mine=true.

用户数据用于桌面应用程序中的帐户识别和实时流式传输。

如果没有以下内容,我将无法创建“包装”YouTube 帐户来访问 YouTube:

问题是 YouTube API 为某些帐户提供数据。我拥有三个 YouTube 帐户和四个频道,目前只有一个无法使用。

API 返回以下数据:

▿ 3 elements
  ▿ 0 : 2 elements
    - key : "kind"
    - value : youtube#channelListResponse
  ▿ 1 : 2 elements
    - key : "pageInfo"
    ▿ value : 2 elements
      ▿ 0 : 2 elements
        - key : resultsPerPage
        - value : 5
      ▿ 1 : 2 elements
        - key : totalResults
        - value : 0
  ▿ 2 : 2 elements
    - key : "etag"
    - value : afx3VqgXQBJVZZO3RVos5k1JEM0

有效的 JSON 响应如下所示:

▿ 4 elements
  ▿ 0 : 2 elements
    - key : "items"
    ▿ value : 1 element
      ▿ 0 : 4 elements
        ▿ 0 : 2 elements
          - key : etag
          - value : SOME_ETAG
        ▿ 1 : 2 elements
          - key : kind
          - value : youtube#channel
        ▿ 2 : 2 elements
          - key : id
          - value : SOME_ID
        ▿ 3 : 2 elements
          - key : snippet
          ▿ value : 5 elements
            ▿ 0 : 2 elements
              - key : localized
              ▿ value : 2 elements
                ▿ 0 : 2 elements
                  - key : title
                  - value : SOME_TITLE
                ▿ 1 : 2 elements
                  - key : description
                  - value : 
            ▿ 1 : 2 elements
              - key : title
              - value : SOME_TITLE
            ▿ 2 : 2 elements
              - key : description
              
              ...

到目前为止我尝试了什么:

这个问题是新问题,几个月前一切正常,我在回复中没有发现任何错误。

标签: swiftmacosyoutube-data-api

解决方案


我在许多其他问题中发现了这个问题。其他问题有助于误解和混淆,与此 SO 帖子无关。

对于 Youtube 用户没有频道的情况,Youtube Data API 返回一个不完整的响应。*

Youtube 用户* 可以在三种状态下使用他的帐户直播功能:

  1. 用户无法直播,因为他没有频道。
  2. 用户无法直播,因为他的频道未通过电话(短信)验证。
  3. 用户可以直播,因为他的频道已经过验证。

Google 用户* 的默认启动状态是 1)。Google 用户* 不会自动拥有 Youtube 频道。他需要创造一个。当开发人员使用以下网址向 API 询问此用户的频道列表(状态 1)时: https ://www.googleapis.com/youtube/v3/channels?part=id%2Csnippet&mine=true 他将收到错误的答案:

▿ 3 elements
    ▿ 0 : 2 elements
        - key : "kind"
        - value : youtube#channelListResponse
    ▿ 1 : 2 elements
        - key : "pageInfo"
        ▿ value : 2 elements
            ▿ 0 : 2 elements
                - key : resultsPerPage
                - value : 5
            ▿ 1 : 2 elements
                - key : totalResults
                - value : 0
    ▿ 2 : 2 elements
        - key : "etag"
        - value : afx3VqgXQBJVZZO3RVos5k1JEM0

预期的答案是:

  1. 错误 - “获取频道列表失败。用户没有频道。”

▿ 4 个元素 ▿ 0:2 个元素 - 键:“错误” ▿ 值:1 个元素 ▿ 0:2 个元素 - 键:“消息” - 值:“获取频道列表失败。用户没有频道。” ...

  1. 响应代码 200 - "items" = [] -> 只是一个空数组

    ▿ 4 个元素 ▿ 0:2 个元素 - 键:“项目” ▿ 值:0 个元素

             ...
    
         ▿ 1 : 2 elements
             - key : "kind"
             - value : youtube#channelListResponse
         ▿ 2 : 2 elements
             - key : "pageInfo"
             ▿ value : 2 elements
                 ▿ 0 : 2 elements
                     - key : resultsPerPage
                     - value : 5
                 ▿ 1 : 2 elements
                     - key : totalResults
                     - value : 1
         ▿ 3 : 2 elements
             - key : "etag"
             - value : 6mudnjdaMbyKk1XIwl4DvHzx5pc
    

*Google 和 Youtube 在其文档中不使用 Google 用户或 Youtube 用户。据我了解,您可以拥有一个 Google 帐户(允许您访问其他 Google 产品),而无需登录 Youtube。当您第一次登录 Youtube 时,会出现一个带有用户名的小缩进,表明这实际上是一个 Youtube 帐户。该 Youtube 帐户将没有频道并且 UI 状态(“无频道”)。当您单击“切换帐户”选项卡时,如果您有多个频道,您将能够实际切换频道。您还可以切换帐户。

编辑1:

API 问题可以在这里找到。

编辑2:

可以在此处找到 Youtube Data API“如何获得帮助”页面问题。


推荐阅读