我正在尝试使用googleapis
npm包从Google Drive文件中获取元数据:
import { google } from 'googleapis'
const auth = new google.auth.JWT(
'service-user@project-title.iam.gserviceaccount.com',
null,
'-----BEGIN PRIVATE KEY-----\nXXXXXX==\n-----END PRIVATE KEY-----\n',
['https://www.googleapis.com/auth/drive.readonly'],
)
export default async ( req, res ) => {
try {
const drive = google.drive( { version: 'v3', auth } )
const data = await drive.files.get( { fileId: 'XXXX' } )
res.json( { data } )
}
catch ( err ) {
console.error( err )
res.status( 500 ).json( { error: err.message, err } )
}
}
当我发出请求时,我得到了一个File not found: XXXX
错误。但该文件确实存在,并且我使用的服务帐户具有访问权限。我可以确认这一点,因为如果我在添加alt: "media"
参数时发出完全相同的请求:
const data = await drive.files.get( { fileId: 'XXXX', alt: "media" } )
请求起作用了,我可以获得文件数据了。这让我相信权限是正确的。
您知道如何成功获取文件元数据(特别是文件名)吗?
发布于 2021-06-29 20:39:43
原来是因为文件是与服务帐户共享的,而不是在服务帐户自己的驱动器中共享的。我需要包含参数supportsAllDrives: true
。
const data = await drive.files.get( { fileId, supportsAllDrives: true } )
https://stackoverflow.com/questions/68177309
复制相似问题