Google 驱动器 API - 列出文件的权限

Google Drive API - List Permissions of a file

我正在使用列表权限端点 (https://developers.google.com/drive/api/v3/reference/permissions/list) 获取共享驱动器中存在的文件的所有权限。

我 运行 发现共享驱动器中的一个文件存在问题。该文件有 100 个权限。共享驱动器文件的最大权限数 return 为 100,因此我只需要发出一个请求即可获得该文件的所有权限,而 API 不应该 return 下一页标记。

但这不是我遇到的行为,在第一个请求之后,我不断从 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)

我应该在我的代码中考虑这种情况吗?从文档中,这从未被提及,所以我认为这不应该发生。

您的 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...)
}

如果文件有 < 100 个结果,您是否也可以先验证 result.NextPageToken 是否会 return“”,我使用 API 资源管理器和 Apps 脚本来访问此 API 并且当权限列表小于 pageSizenextPageToken 不是响应主体的一部分。