请求无法完成,因为您已超出配额

Posted

技术标签:

【中文标题】请求无法完成,因为您已超出配额【英文标题】:The request cannot be completed because you have exceeded your quota 【发布时间】:2020-02-16 12:51:11 【问题描述】:

我尝试使用 javascript MediaUploader.js 将 youtube 视频上传到我自己的帐户,由于某种原因,我在 onError 函数中收到此错误:

"errors": [
   
    "domain": "youtube.quota",
    "reason": "quotaExceeded",
    "message": "The request cannot be completed because you have exceeded your \u003ca href=\"/youtube/v3/getting-started#quota\"\u003equota\u003c/a\u003e."
   
  ],
  "code": 403,
  "message": "The request cannot be completed because you have exceeded your \u003ca href=\"/youtube/v3/getting-started#quota\"\u003equota\u003c/a\u003e."

我今天只测试了几次,但出现了这个奇怪的错误。

var signinCallback = function (tokens, file)
console.log("signinCallback tokens: ",tokens);
if(tokens.accessToken)  //tokens.access_token
  console.log("signinCallback tokens.accessToken: ",tokens.accessToken);
  var metadata = 
    id: "101",
    snippet: 
      "title": "Test video upload",
      "description":"Description of uploaded video",
      "categoryId": "22",//22
      "tags": ["test tag1", "test tag2"],
    ,
    status: 
        "privacyStatus": "private",
        "embeddable": true,
        "license": "youtube"
    
    ;
  console.log("signinCallback Object.keys(metadata).join(','): ",Object.keys(metadata).join(','));
  var options = 
    url: 'https://www.googleapis.com/upload/youtube/v3/videos?part=snippet%2Cstatus&key=<my api key>',

    file: file,
    token: tokens.accessToken,
    metadata: metadata,
    contentType: 'application/octet-stream',//"video/*",
    params: 
      part: Object.keys(metadata).join(',')
    ,
    onError: function(data) 
      var message = data;
      // Assuming the error is raised by the YouTube API, data will be
      // a JSON string with error.message set. That may not be the
      // only time onError will be raised, though.
      try 
        console.log("signinCallback onError data: ",data);
        if(data!="Not Found")
            var errorResponse = JSON.parse(data);
            message = errorResponse.error.message;
            console.log("signinCallback onError message: ",message);
            console.log("signinCallback onError errorResponse: ",errorResponse);
        else

        
       finally 
        console.log("signinCallback error.... ");
      
    .bind(this),
    onProgress: function(data) 
      var currentTime = Date.now();
      var bytesUploaded = data.loaded;
      var totalBytes = data.total;
      // The times are in millis, so we need to divide by 1000 to get seconds.
      var bytesPerSecond = bytesUploaded / ((currentTime - this.uploadStartTime) / 1000);
      var estimatedSecondsRemaining = (totalBytes - bytesUploaded) / bytesPerSecond;
      var percentageComplete = (bytesUploaded * 100) / totalBytes;
      console.log("signinCallback onProgress bytesUploaded, totalBytes: ",bytesUploaded, totalBytes);
      console.log("signinCallback onProgress percentageComplete: ",percentageComplete);
    .bind(this),
    onComplete: function(data) 
      console.log("signinCallback onComplete data: ",data);
      var uploadResponse = JSON.parse(data);
      this.videoId = uploadResponse.id;
      //this.pollForVideoStatus();
    .bind(this)
  
  MediaUpload.videoUploader(options);

;

我查看了我的配额的开发者控制台,我的配额限制这么大,我不可能超过我的配额,例如,我今天总共有 89 个查询,我的配额限制是 10,000 个查询/天。

预期:成功将我的视频上传到我的 youtube 帐户。 实际结果:quotaExceeded

【问题讨论】:

我会问一个愚蠢的问题:您使用的帐户凭据是否正确? 是的,我用google登录成功并使用了正确的密钥和正确的令牌, 【参考方案1】:

Youtube 不是每天给你 10,000 个查询,而是每天给你 10,000 个单位;一个查询可以是多个单元,具体取决于您在做什么:

一个简单的读取操作,只检索每个返回的 ID 资源的成本约为 1 个单位。

一次写入操作的成本约为 50 个单位。

上传视频的费用约为 1600 单位。

如果您的 89 个查询包含视频上传或写入操作,那么这将解释您的问题

更多信息: https://developers.google.com/youtube/v3/getting-started#quota

【讨论】:

感谢您的回复,我现在明白了,但是我还有一个问题,当我执行上传函数时,即使我等待了很长时间,onComplete回调函数也没有被调用,我检查了我的帐户和所有的上传,有几个视频显示处理被放弃,视频无法处理,不知道是什么问题。 老实说,我不知道,我只是快速检查了 API 文档以解决这个特定问题 - 阅读它们可能会解释在满足使用限制时如何处理请求【参考方案2】:

损坏的 Google 开发者项目 - 创建一个新项目

我对谷歌感到失望,我的情况就是这样。

我遇到了同样的问题,除了“超出配额”的响应外根本没有使用。我的解决方案是创建一个新项目。我想这是因为随着时间的推移在内部发生了一些变化,并且没有正确应用于(至少我的)已经存在的项目......

出于多种原因,我已经停止使用 AWS,并认为 Google Cloud 会是一种令人耳目一新的体验,但这表明 Google 对待现有项目的态度与它扼杀的新产品一样糟糕。向 Google 发起攻击。

https://github.com/googleapis/google-api-nodejs-client/issues/2263#issuecomment-741892605

【讨论】:

同样的事情发生在我身上。他们只是将所有 API 请求的配额重置为 0。验证最后一个项目花了一周时间,现在我不得不重新做这个愚蠢的事情:/

以上是关于请求无法完成,因为您已超出配额的主要内容,如果未能解决你的问题,请参考以下文章

Google Map 中的“您已超出此 API 的请求配额”[重复]

GCP 错误:超出配额“GPUS_ALL_REGIONS”。限制:全局 0.0

表 'users' 超出 Oracle 空间配额

Google Play Developer API - 超出配额

Heroku 错误 R14(超出内存配额):我该如何解决?

已超出最大可命名字符数配额 (16384)