我正在使用列表权限终结点(https://developers.google.com/drive/api/v3/reference/permissions/list)获取共享驱动器中存在的文件的所有权限。
我遇到了一个问题,因为我的文件位于共享驱动器中。该文件有100个权限。对共享驱动器文件返回的权限数量的最大限制是100,因此我应该只需要发出一次请求来获取该文件的所有权限,并且API不应返回下一页标记。
但这不是我正在经历的行为,在第一次请求之后,我不断地从API得到相同的下一页令牌。
因此,对于下面的代码(用go编写),我进入了一个无限循环,因为我不断地得到相同的下一页令牌。
var permissionService PermissionsService := getPermissionsService()
fileID := "1234abcd"
nextPageToken := ""
anotherPage := true
permissions := []*Permission{}
for anotherPage {
result, err := permissionService.
List(fileID).
SupportsAllDrives(true).
SupportsTeamDrives(false).
Fields("*").
PageSize(100).
Do()
if err != nil {
panic(err)
}
anotherPage = result.NextPageToken != ""
nextPageToken = result.NextPageToken
permissions = append(permissions, result.Permissions...)
}
fmt.Println("Permissions", permissions)我应该在我的代码中说明这种情况吗?在文档中,从来没有提到过这一点,所以我认为这不应该发生。
发布于 2021-01-06 01:19:16
您似乎没有在permissionService中添加PageToken参数。实际上,您请求的是权限服务的前100个结果。
不熟悉这种语言,但大致是这样的
for anotherPage {
result, err := permissionService.
List(fileID).
SupportsAllDrives(true).
SupportsTeamDrives(false).
Fields("*").
PageSize(100).
PageToken(nextPageToken).
Do()
if err != nil {
panic(err)
}
anotherPage = result.NextPageToken != ""
nextPageToken = result.NextPageToken
permissions = append(permissions, result.Permissions...)
}您是否也可以先验证result.NextPageToken是否会返回"“如果文件有< 100个结果,当权限列表小于pageSize时,我使用API explorer和应用脚本访问此接口,并且nextPageToken不是响应体的一部分。
https://stackoverflow.com/questions/65583255
复制相似问题