【问题标题】:YouTube Data API not returning channel data for some accountsYouTube 数据 API 未返回某些帐户的频道数据
【发布时间】:2021-05-26 22:11:14
【问题描述】:

我正在尝试从以下 YouTube 数据 API 端点获取频道用户数据: Channels: list 使用这个网址:

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

用户数据用于在桌面应用中进行帐户识别和直播。

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

  • 频道 ID、id
  • 频道名称,title

问题在于 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
              
              ...

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

  • 已验证 Web API Explorer 显示相同的问题。
  • 已验证权限是否相同。
  • 已验证帐户启用了所有相同的功能。

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

【问题讨论】:

  • 您不应该联系 YouTube 支持吗?我看不出这是一个编程问题。
  • 这并不一定使问题适合stackoverflow。
  • @Darkwonder:您能否发布Channels.list 未生成您需要的元数据的频道的ID?频道的 idtitle 是公共信息(所有人都可以访问)。
  • @Darkwonder:另一方面,Joakim Danielson 非常正确:SO 绝不是 Google 支持(尽管 Google 开发者网站声称相反)。谷歌有它的own issue tracker site
  • @asuka 这是 Xcode 调试输出。缺点是您无法将其复制/粘贴到任何其他 JSON 工具中。

标签: swift macos youtube-data-api


【解决方案1】:

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

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

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

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

Google 用户* 的默认开始状态是 1)。 Google 用户* 不会自动拥有 Youtube 频道。他需要创造一个。 当开发人员使用 url 向 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 个元素 - 关键信息” - value : "获取频道列表失败。用户没有频道。" ...

  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问题可以在here找到。

编辑 2:

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

【讨论】:

  • (我在上面重新发布我的评论只是因为它与您的答案有关。)@DarkWonder:在我看来,当您获得凭据数据作为运行成功完成的结果时,OAuth 身份验证/授权流程在尚未附加到 YouTube 频道的 Google 帐户,API 会正确响应您:items 的缺失本身并不是 API 错误,因为确实没有关联的 YouTube 频道哪个返回元数据。在这种情况下,可以改进 API 以实际返回错误;这适用于实现 API 的人。
  • 但是,API 的当前行为并没有正式记录。因此,当然可以提交一份文档错误报告。
  • 个人评论:如果您发布的 API 输出是 JSON 文本,我会更早地对您的问题做出反应。请注意,Google 工作人员也可能会发现您的文字难以阅读。
  • @stvar 下次邮编时,我将转换 JSON 文本以便于阅读。感谢您的支持和建议。
猜你喜欢
  • 2016-06-05
  • 2019-09-01
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 2020-07-13
  • 2016-04-16
相关资源
最近更新 更多