使用Google Drive API获取权限列表时无法获取用户邮箱地址的问题
Google Drive API权限列表无法获取用户邮箱问题解决
问题说明
在使用Google Drive API为共享云端硬盘文件夹配置权限时,能成功创建权限记录,但调用permissions.list接口获取权限列表时,无法拿到对应的用户邮箱地址。尽管TypeScript的类型定义中包含emailAddress字段,但接口响应里并未返回该字段。
授权采用Google OAuth2方式,生成令牌时仅设置了权限范围:https://www.googleapis.com/auth/drive。
相关代码
const drive = google.drive({ version: 'v3', auth: oauth2Client }); await drive.permissions.create({ fileId: franchiseFolderId, supportsAllDrives: true, requestBody: { type: 'user', role: 'writer', emailAddress: userEmail, }, }); const permissions = await drive.permissions.list({ fileId: folderId, supportsAllDrives: true, }); console.log('permissions', permissions.data.permissions);
控制台输出
[{ id: 'XXXXXXXXXXXXXXXXXXX', type: 'user', kind: 'drive#permission', role: 'writer' }]
解决办法
Google Drive API v3的permissions.list接口默认不会返回邮箱这类敏感信息,需要显式通过fields参数指定要返回的字段,包含emailAddress即可。
修改permissions.list的调用代码,添加fields参数:
const permissions = await drive.permissions.list({ fileId: folderId, supportsAllDrives: true, fields: 'permissions(id,type,role,emailAddress)' });
如果需要返回所有可用字段,也可以使用通配符:
fields: '*'
另外,当前使用的https://www.googleapis.com/auth/drive权限范围已足够获取这些信息,无需额外添加其他权限范围。
内容的提问来源于stack exchange,提问作者Qaim Siddiqui
相关产品推荐
相关产品推荐

