从YouTube API获取YouTube视频列表时出现禁止错误?

时间:2017-07-14 12:38:05

标签: javascript angularjs youtube youtube-data-api

我打电话给youtube api获取youtube视频数据列表。但我得到403错误。我还启用了YouTube Data 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()方法在本地运行时才收到错误。但是当我在浏览器窗口(https://www.googleapis.com/youtube/v3/videos?id=i7KKDpmnR7U&key=AIzaSyBbyrB-WGvDSYrxHhEnQfcTuiyrDkF7LwI&part=snippet,statistics,contentDetails)上用apikey和videoId手动绑定网址时,在浏览器即视频对象中获得成功响应。

2 个答案:

答案 0 :(得分:2)

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

enter image description here

因此,id (i7KKDpmnR7U)参数指定的通道不支持请求,或者请求未得到适当授权。

                                       OR

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

答案 1 :(得分:1)

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

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'

另一种方法是关掉'键' for' access_token'并将OAuth 2.0令牌作为查询参数放在那里