首页 > 解决方案 > 出现错误:已超出未经验证使用的每日限制。继续使用需要注册

问题描述

尝试关注https://developers.google.com/drive/api/v3/quickstart/nodejs

我让它与谷歌工作区(G-Suite)一起工作,但是在玩了一些对谷歌驱动器API的不同调用时,我开始收到一条错误消息:

API 返回错误:

错误:已超出未经验证使用的每日限制。继续使用需要注册。

此消息表明我遇到了一些配额问题。然而,我只调用了大约 50 次 API,针对https://console.cloud.google.com/https://console.developers.google.com/的工作时间没有产生新的见解。配额是 10K 呼叫,所以我不能只用 50 个呼叫就超过它...

我看到的与此相关的 Stack Overflow 响应似乎都不适用或不是最新的。

不幸的是,https://developers.google.com/drive/api/v3/handle-errors中缺少此错误。

标签: google-drive-apigoogle-workspacegoogle-developers-console

解决方案


经过一天的工作,我意识到当在我的代码中本地提供给google.drive() API 的身份验证密钥未定义时,会发送这个神秘的响应。

似乎这个神秘的响应被谷歌 API 用作“通用错误消息”。


以下是导致此错误的一个示例,但还有无数其他示例 - 在调用google.drive() API 期间无法设置身份验证的任何代码都会产生相同的结果。

此示例代码由 google 提供,并且可以正常工作。

google.drive({version: 'v3', auth});

它起作用的原因是它转换(扩展)为:

google.drive({version: 'v3', auth: auth});

(这个扩展是由 Nodejs 隐式完成的)

使用以下代码将产生错误

const drive = google.drive({version: 'v3'});
drive.files.list({}, (err, res) => {
 if (err) return console.log('The API returned an error: ' + err);
});

使用以下代码不会产生错误:

const drive = google.drive({version: 'v3', auth});
drive.files.list({}, (err, res) => {
   if (err) return console.log('The API returned an error: ' + err);
});

使用以下代码也不会产生错误(因为它显式扩展为与前一个相同):

const drive = google.drive({version: 'v3', auth: auth});
drive.files.list({}, (err, res) => {
   if (err) return console.log('The API returned an error: ' + err);
});

使用以下代码将产生错误(这是我的坏事):

var myAuth = auth;
const drive = google.drive({version: 'v3', myAuth});
drive.files.list({}, (err, res) => {
   if (err) return console.log('The API returned an error: ' + err);
});

使用以下代码将修复该错误:

var myAuth = auth;
const drive = google.drive({version: 'v3', auth: myAuth});
drive.files.list({}, (err, res) => {
   if (err) return console.log('The API returned an error: ' + err);
});

推荐阅读