求助:共享驱动器下google-api-python-client的Permissions.List分页失效
问题分析
你的分页方案失效的核心原因是请求的fields参数未包含nextPageToken。Google Drive API的分页依赖响应中的nextPageToken字段生成下一页请求,但你当前的fields仅指定了permissions(type,emailAddress),导致API不会返回分页令牌,list_next自然无法生成后续请求。
同时,共享驱动器的权限列表逻辑与普通驱动器略有差异,但核心分页机制仍需依赖nextPageToken。
修复后的代码
file_id = "12abcde" # 你的文件夹ID all_permissions = [] request = service.permissions().list( fileId=file_id, fields="nextPageToken, permissions(type,emailAddress)", # 新增nextPageToken字段 supportsAllDrives=True, pageSize=100 # 显式设置每页最大数量,默认也是100,可按需调整 ) while request is not None: response = request.execute() # 收集当前页的权限 if "permissions" in response: all_permissions.extend(response["permissions"]) # 生成下一页请求 request = service.permissions().list_next(request, response) # 输出所有权限 for perm in all_permissions: print(f"类型: {perm['type']}, 邮箱: {perm.get('emailAddress', '无邮箱(如域权限)')}")
额外注意事项
- 确保你的API账号拥有共享驱动器的
drive.permissions.read权限,或具备团队驱动器管理员权限,否则可能无法获取完整的权限列表。 - 共享驱动器的权限可能包含继承自上级文件夹或组织域的权限,若需过滤特定类型的权限,可在循环中添加判断逻辑(比如只保留
type='user'的条目)。
内容的提问来源于stack exchange,提问作者Nico Albers
相关产品推荐
相关产品推荐

