【问题标题】:How can I update google drive file in flutter?如何在颤动中更新谷歌驱动器文件?
【发布时间】:2020-10-13 19:50:48
【问题描述】:

我想将驱动器文件更新为shared = true。 但我得到这个错误。我该如何解决?

E/flutter (14758): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: DetailedApiRequestError (status: 403, message: The resource body includes fields which are not directly writable.)

Future update() async {
  var client = await getHttpClient();
  var drive = ga.DriveApi(client);
  print("Uploading file");
  var metadata = new ga.File();
  metadata..shared = true;
  metadata..name = 'sst';
  var response =
      await drive.files.update(metadata, '1633r8UpI6gmJKtosLju3ThCQ2YR5AzKa');
  print("Result ${response.toJson()}");
}

【问题讨论】:

    标签: flutter dart google-drive-api mobile-application


    【解决方案1】:

    问题:

    正如您收到的错误所说,您正在尝试更新不可直接写入的属性。

    说明:

    并非Files resource 中的所有属性都可以通过Files: update 更新。您可以通过查看File resource page中的属性列表来检查哪些可以,哪些不能:可以直接更新的在Notes字段中标记为writable。如果您向下滚动到属性shared,您会注意到它不是writable,这就是您收到此错误的原因。

    shared 不是writable 的原因是文件共享不是由File resource 管理,而是由Permissions resource 管理。可以通过Permissions: create 共享文件(您必须在其中指定与谁共享文件,以及此权限将授予哪个角色(查看权限、编辑权限等)。

    文件共享后(通过Permissions: create,或直接通过云端硬盘用户界面),shared 属性将自动变为true

    参考:

    【讨论】:

    • 非常感谢。您的回答很棒。
    • @SoeSan 不客气。另外,你能考虑accepting this answer吗?这很有用,因为该社区依靠它与其他用户分享知识。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 2017-01-29
    相关资源
    最近更新 更多