【问题标题】:Google Drive API - List Permissions of a fileGoogle Drive API - 列出文件的权限
【发布时间】:2021-01-05 16:56:28
【问题描述】:

我正在使用列表权限端点 (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)

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

【问题讨论】:

    标签: google-api google-drive-api


    【解决方案1】:

    您的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 是否会在文件有nextPageToken 在获得许可时不属于响应正文的一部分列表小于pageSize。

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多