【问题标题】:How do I find a users YouTube channel from OAuth client authentication?如何通过 OAuth 客户端身份验证找到用户 YouTube 频道?
【发布时间】:2021-01-25 10:35:17
【问题描述】:

对于我正在构建的应用程序,我希望最终用户使用 gapi OAuth2 和 从那里我希望应用程序在他们的 YouTube 频道上查找播放列表 并加载它。

getAuthInstance 方法返回一个带有 Google 用户名的对象。然而 对于我自己的特定用户名,通过用户名查找频道 ID 的查询 不返回任何结果。来自一些browsing online,这显然是一个问题 使用某些 YouTube 帐户。

这个问题有解决办法吗?

【问题讨论】:

    标签: javascript google-api youtube-api youtube-data-api google-api-js-client


    【解决方案1】:

    如果您有有效的 OAuth 2.0 身份验证/授权(例如,通过使用 GAPI 获得),那么使用使用参数 mine=true 查询的 Channels.list API 端点确定经过身份验证的用户的频道 ID 非常简单:

    mine(布尔值)
    此参数只能在正确的authorized request 中使用。将此参数的值设置为 true 以指示 API 仅返回经过身份验证的用户拥有的频道。

    在调用端点时,返回的Channels resource 的属性id 包含经过身份验证的用户的频道ID。


    关于 Javascript GAPI(即 Google 的浏览器端 JavaScript 客户端库)实现,代码如下所示(更广泛的上下文请查看 Google 的此示例源文件:analytics_codelab.js):

    var channelId;
    
    function loadAPIClientInterfaces() {
      gapi.client.load('youtube', 'v3', function() {
        getUserChannel();
      });
    }
    
    function getUserChannel() {
      var request = gapi.client.youtube.channels.list({
        part: 'id',
        fields: 'items(id)',
        mine: true
      });
      request.execute(function(response) {
        if ('error' in response) {
          displayMessage(response.error.message);
        } else {
          channelId = response.items[0].id;
        }
      });
    }
    

    请注意,上面的代码(与analytics_codelab.js 中的不同)使用fields 请求参数从Channels.list 端点仅获取通道的ID 信息(从API 中仅询问信息总是好的)这是实际使用的)。

    【讨论】:

    • 好东西。谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多