【问题标题】:forbidden error while fetching YouTube videos list from the YouTube API?从 YouTube API 获取 YouTube 视频列表时出现禁止错误?
【发布时间】:2017-07-14 12:38:04
【问题描述】:

我正在调用 youtube api 来获取 youtube 视频数据列表。但我收到 403 错误。我还启用了 YouTube 数据 API (v3)。

我正在尝试使用 YouTube API 从 YouTube 获取视频列表。我正在使用 API 密钥。当我使用下面的 URL 时,一切正常,我得到了想要的结果:GET https://www.googleapis.com/youtube/v3/videos?id=i7KKDpmnR7U&key=YOUR_API_KEY=snippet,statistics,contentDetails

但是当我在本地尝试时,我无法在控制台中打印成功响应。我总是得到错误响应,因为得到 403 被禁止。当我们在本地环境中运行时有什么问题吗?或者 Api 有任何问题

缺少任何提示的东西会很棒!

我的代码

$scope.youtubeApi = function(videoId){
    console.log('youtubeApi: ' + JSON.stringify(videoId));

    if (videoId) {
        //console.log('Youtube API Call function is called and Video is is : ' + videoId);

        var API_KEY = "AIzaSyCmsmxLnAnDxwQ6wzzzHnLEGBt7X8ce94wI10A";

        $http.get("https://www.googleapis.com/youtube/v3/videos?id="+ videoId + "&key=" + API_KEY + "&part=snippet,statistics,contentDetails").
        success(function (data, status, headers, config) {
           console.log('sucess call.' + JSON.stringify(data));
          //$timeout(parseresults(data), 500);
          //formObject(data);
        }).
        error(function (data, status, headers, config) {
          console.log('Error while saving this Video Id details in rest.' + JSON.stringify(data));
          console.log('Error while saving this Video Id details in rest.' + videoId);
        });
      }
  }

控制台出错

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "forbidden",
        "message": "Forbidden"
      }
    ],
    "code": 403,
    "message": "Forbidden"
  }
}

只有当我尝试使用 $http.get() 方法在本地运行时才会出现错误。但是当我在浏览器窗口(@98​​7654322@)上手动将 url 与 apikey 和 videoId 绑定时,在浏览器中得到了成功响应,即视频对象。

【问题讨论】:

  • 对密钥有什么限制吗?通常,在使用 API 密钥时,您可以通过输入有效的 HTTP 引用/IP 地址/iOs 应用程序等来设置请求来自何处的限制
  • 使用你的密钥seems to work fine
  • 我建议进入您的控制台并更改您的 api 密钥。现在每个人都可以访问您的密钥。至于你的问题,乔治有一个有效的观点。您还可以查看本地开发设置,因为您可能需要更改一些限制。

标签: javascript angularjs youtube youtube-data-api


【解决方案1】:

根据YouTube v3 error document。错误类型 403 是 forbiddenquotaExceeded 的符号。请在下面找到说明。

因此,id (i7KKDpmnR7U)参数指定的通道不支持请求或请求未正确授权。

                                       OR

当未经授权的请求尝试检索视频资源的详细信息时,videos.list 方法会返回禁止 (403) 错误。这些部分仅供视频所有者使用。

【讨论】:

    【解决方案2】:

    查看他们的文档,您想像这样提出请求:

    var url = 'https://www.googleapis.com/youtube/v3/videos';
    
    // These are the required query options
    var requiredParameters = {
      part: 'snippet', //required, json form, use 'snippet'
      key: 'API_KEY', // required, put api key here, try to hide it
      id: '12345', // required, the video id
    };
    
    
    $http({
      method: 'GET',
      url: url,
      params: requiredParameters
    })
    .then((response) => {
    
    })
    .catch((err) => {
    
    })
    
    
    /* Optional parameters
    {
      h1,
      maxHeight,
      maxResults,
      maxWidth,
      onBehalfOfContentOwner,
      pageToken,
      regionCode,
      videoCategoryId
    }
    */
    

    注意:不提供 OAuth 2.0 令牌时使用 key 参数。如果您有令牌,请将其传递到标头中,如下所示:

    Authorization: 'Bearer oauth2-token'
    

    另一种方法是为“access_token”切换“key”并将 OAuth 2.0 令牌作为查询参数放在那里

    【讨论】:

      猜你喜欢
      • 2017-07-12
      • 2019-04-04
      • 1970-01-01
      • 2022-07-15
      • 2019-08-07
      • 2015-12-03
      • 2012-10-24
      • 2017-09-01
      • 2015-08-31
      相关资源
      最近更新 更多