使用Go创建/更新Google Drive权限 [使用API创建电子表格但无权访问]

3

我正在尝试使用谷歌云盘API创建一个电子表格,以下是我的代码,但是我无法访问它。

[更新:这个文件似乎不在我指定的云盘中,有人知道为什么吗?]

[更新:在字段中添加了父级,但出现404错误,显示未找到文件。如果有人知道原因,请提前感谢。]

func (dr *driveService) CreateFile(driveId string, fileName string, parents []string) (*drive.File, error) {
    file := &drive.File{
        DriveId:  driveId,
        Name:     fileName,
        MimeType: mimeTypeSpreadsheet,
        Parents:  parents,
        
    }
    file, err := dr.googleDriveService.Files.Create(file).Do()
    return file, err
}

我尝试使用这段代码创建/更新权限,但出现了以下错误:Error 403: The resource body includes fields which are not directly writable., fieldNotWritable

func (dr *driveService) CreatePermission(fileId string, permissionType string, permissionRole string) error {
    permissionToBeCreated := &drive.Permission{
        Type: permissionType,
        Role: permissionRole,
    }
    filePermission, err := dr.googleDriveService.Permissions.Create(fileId, permissionToBeCreated).Do()
    if err != nil {
        fmt.Printf("An error occurred creating permission for file: %v\n", err)
        return err
    }

    _, err = dr.googleDriveService.Permissions.Update(fileId, filePermission.Id,filePermission).Do()
    if err != nil {
        fmt.Printf("An error occurred: %v\n", err)
        return err
    }
    return nil
}

我试图在第二个函数中删除update部分,但文件的权限出现了nil

那么,有人有任何想法如何解决这个问题吗?或者一般来说,我如何创建一个每个人都可以使用链接访问的电子表格呢?

谢谢!


是的,父级是正确的,谢谢。我发现错误在于file, err := dr.googleDriveService.Files.Create(file).Do()这里,应该将supportAllDrives设置为true。否则它不会起作用。非常感谢! - kangt
有趣的是,supportsAllDrives自2020年6月以来就应该被弃用了。您使用的库版本是什么? - Iamblichus
我正在使用v3的Google Drive API,如果你是指这个的话?在我的版本中,supportsTeamDrive已经被弃用了,但supportAllDrives没有。 - kangt
它应该已经被弃用了,但是文档目前并没有显示出来。不过我在Python库中找到了一个参考:supportsAllDrives: boolean, Deprecated - Whether the requesting application supports both My Drives and shared drives. This parameter will only be effective until June 1, 2020. Afterwards all applications are assumed to support shared drives.(我使用这个库在共享驱动器中创建了一个文件,没有设置supportsAllDrives)。https://developers.google.com/resources/api-libraries/documentation/drive/v3/python/latest/drive_v3.files.html - Iamblichus
我指的是你正在使用的Go库,而不是API的版本。 - Iamblichus
显示剩余6条评论
1个回答

1
通过在创建文件时将supportAllDrives设置为true来解决了该问题。但是这应该已经被弃用,但不在我的版本上。
编辑:
看起来supportsAllDrives不再被弃用,至少目前是这样。在官方文档中无法找到废弃通知,因此似乎仍然受支持。
此外,请参阅this article,看起来对共享驱动器的更改已被推迟:
引用:
编辑注:由于当前事件,Google团队已经决定在这个不确定的时期避免造成额外的干扰。因此,我们无限期地推迟了有关共享驱动器选择机制的拟议更改。只有在请求设置相关的选择参数时,才会返回共享驱动器和共享驱动器内的文件。

你好,感谢您提供答案。请注意,在官方文档中已经找不到弃用说明,因此至少在官方上仍然支持该功能。 - Iamblichus
看了这篇文章,似乎共享驱动器的更改已经被推迟了:编辑注:由于当前事件,Google团队已经决定在这个不确定的时期避免造成额外的干扰。因此,我们将无限期推迟有关共享驱动器选择加入机制的建议更改。只有在请求设置相关的选择加入参数时,才会返回共享驱动器和共享驱动器内的文件。 - Iamblichus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接