我正在尝试使用 NodeJS googleapis 库(https://github.com/google/google-api-nodejs-client)中的(实验性)newBatchRequest 方法,但返回的结果全部返回来自 Google 的 401 Invalid Credentials 错误。在不使用 newBatchRequest 发送单个请求时,具有完全相同的身份验证客户端(相同的凭据)的完全相同的调用按预期工作。
这是批处理请求代码:
var c = client.newBatchRequest()
async.each(files, function(fileid, cb) {
c.add(client.drive.files.get({fileId:fileid}));
cb();
},
function(err) {
console.log('client is')
console.log(oauth2Client)
c.withAuthClient(oauth2Client).execute(function(err, results) {
console.log(err)
console.log(results);
})
})
这会在 console.log 中产生一个包含以下错误的数组:
{ errors: [ [Object] ],
code: 401,
message: 'Invalid Credentials' }
在不使用 batchRequest 并使用完全相同的 withAuthClient(oauth2Client) 运行完全相同的调用 (drive.files.get) 的情况下,以下代码将按预期运行。以下不会产生错误。请注意,传入的 oauth2Client 变量完全相同,并且在相同的范围内。
client.drive.files.get({fileId:fid})
.withAuthClient(oauth2Client)
.execute(function(err, results){
[...etc...]
关于这里可能发生什么的任何想法?
谢谢!