方案是:在https://console.developers.google.com/apis/credentials中创建OAuth 2.0客户端,我想从G Suite Business中的用户Google云端硬盘(用户空间)中选择一些文件,然后复制到其他所有者的云端硬盘中的某个文件夹,然后更改最近复制的文件的所有者。
最后一项操作导致找不到文件 error
。即使出现此错误,文件也会被复制文件并具有 ID ,该响应会告诉我它不存在。代码和堆栈如下:
const google = require('googleapis'); // https://github.com/google/google-api-nodejs-client
const oauth2Client = new OAuth2('client_id', 'client_secret', 'redirect_url');
oauth2Client.setCredentials({'access_token': '' ,'token_type': '','expiry_date': ''});
const sourceFileId = '';
const googleDrive = google.drive({
version: 'v3',
auth: oauth2Client
});
googleDrive.permissions.create({
fileId: sourceFileId,
resource: {
role: 'reader',
type: 'domain',
domain: 'example.com',
}
}, (error, permissionResponse) => {
if (error) {
console.log(error);
} else {
googleDrive.files.copy({
fileId: sourceFileId,
supportsTeamDrives: true,
ignoreDefaultVisibility: true,
resource: {
description: 'Copy of a file from user to store in Team Driver',
parents: ['_driveteam_folder_id_']
}
}, (copyError, copyResponse) => {
if (copyError) {
console.log(copyError);
} else {
console.log(copyResponse, copyResponse.id);
// Even with this timeout the error occurrs
// 1elLwBg0urdz5z23_83tjpDSBt7YxD1c8 is the copyResponse.id show in the error below
setTimeout(() => {
googleDrive.permissions.create({
fileId: copyResponse.id,
transferOwnership: true,
resource: {
role: 'owner',
type: 'user',
emailAddress: 'someone@example.com'
}
}, (ownerPermissionError, ownerPermissionResponse) => {
if (ownerPermissionError) {
console.log(ownerPermissionError);
} else {
console.log({permissionResponse, copyResponse, ownerPermissionResponse});
}
});
}, 10000);
}
});
}
});
{错误:找不到档案:1elLwBg0urdz5z23_83tjpDSBt7YxD1c8。 在Request._callback(googleapis \ node_modules \ google-auth-library \ lib \ transporters.js:85:15 在Request.self.callback(node_modules \ request \ request.js:186:22) 在emitTwo(events.js:106:13) 在Request.emit(events.js:191:7) 在请求。 (node_modules \请求\ request.js:1163:10) 在emitOne(events.js:96:13) 在Request.emit(events.js:188:7) 在IncomingMessage。 (node_modules \请求\ request.js:1085:12) 在IncomingMessage.g(events.js:292:16) 在emitNone(events.js:91:20) 代码:404, 错误: [{domain:' global', 理由:' notFound', 消息:'找不到文件:1elLwBg0urdz5z23_83tjpDSBt7YxD1c8。', locationType:'参数', location:' fileId' }]}