使用Google Drive API V3,为什么设置对最近复制的文件的权限会导致找不到文件'错误?

时间:2018-02-08 20:36:46

标签: node.js google-api google-drive-api google-oauth2 google-api-nodejs-client

方案是:在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' }]}

0 个答案:

没有答案