我正在尝试使用针对Google API的nodejs客户端版本21.3.0下载(导出)我拥有的Google云端硬盘文件(私有 - 不与任何人共享)。我在Google API控制台中设置了一个项目,并收到了Drive API的API密钥。当我尝试从节点程序访问我的文件时,我收到“找不到文件”错误。如果我将文件公开(On - Public on the web),我可以正常访问它。我还尝试按照here说明为用户服务器到服务器OAuth2设置服务帐户。然后我使用示例中的代码创建JWT令牌并使用它来请求访问令牌。但即使使用该令牌,当文件是私有时,我也会收到“找不到文件”错误。以下是我目前为此功能提供的代码 -
let key = require(#location_of_json_key_file);
let jwtClient = new google.auth.JWT(
key.client_email,
null,
key.private_key,
['https://www.googleapis.com/auth/drive'],
null
);
jwtClient.authorize(function (err, tokens) {
if (err) {
console.log(err);
return;
}
console.log(tokens);
let fileId = #id_of_file_on_google_drive;
googleDriveApi.files.export(
{
access_token: tokens.access_token, //tried auth: jwtClient as well
fileId: fileId,
mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
//key: <API_access_key> //Tried with API Access Key
},
{encoding: null},
(err, buffer) => {
if (err) {
//keep getting the error here - Error: File not found: #id_of_file_on_google_drive
console.log(`Error occurred while exporting file from Google Drive - ${err}`);
} else {
//process the file...
}
}
);
});
如果该文件归我的帐户所有,我是否应该使用属于同一Google帐户的服务帐户访问该文件,即使该文件是私有的?否则,要以编程方式访问Drive文件,您必须将它们公开,这并不总是可行/可取。
我在这里缺少什么?谢谢你的任何指示。