我在google drive上有一个文件夹,它是通过一个服务帐户创建的,并与我的用户共享。
- 当作为我的用户时,我可以在UI中看到没有问题的文件夹
- 作为服务帐户时,我可以通过API列出文件夹中的所有文件。
我的用户已被授予"编辑"目录权限。
我需要做的是通过API访问文件夹中的文件列表,使用我的用户的服务帐户。
我已经设置了域范围的委托,并包括范围:
https://www.googleapis.com/auth/drive.file
https://www.googleapis.com/auth/drive
作为服务帐户时,此查询返回100个结果但是,当模拟我的用户时,它返回0结果。
const auth = new google.auth.GoogleAuth({
clientOptions: {
subject: 'myemail@myorganization.com'
},
keyFile: './token.json',
scopes: ['https://www.googleapis.com/auth/drive.file'],
});
drive.files.list({
q: "'THE_FOLDER_ID' in parents",
fields: 'nextPageToken, files(id, name, parents, appProperties)',
includeItemsFromAllDrives: true,
supportsAllDrives: true,
fields: '*',
spaces: 'drive'
}).then(response => {
console.log(response.data.files.length)
})
原来我需要使用"https://www.googleapis.com/auth/drive"而不是"https://www.googleapis.com/auth/drive.file">