代码之家  ›  专栏  ›  技术社区  ›  Avrohom Yisroel

为什么我在Google API资源管理器中得到的结果与调用API时得到的结果不同?

  •  0
  • Avrohom Yisroel  · 技术社区  · 4 年前

    我想在我的应用程序中使用Google Drive API。我注册了一个全新的Gmail地址,去了开发者的控制台,创建了一个项目,并为该项目创建了服务帐户。我下载了凭证Json文件,并将其添加到我的项目中。我创建了一个顶级 Test folder 用于测试我的代码。

    我的代码运行良好,因为我可以获得文件夹和文件的列表,创建新文件夹,上传文件等。

    如果我去 UI for Google Drive ,我可以看到文件和文件夹(为了简化调试,删除了除两个文件外的所有文件)。。

    My Drive
      - Test folder
        - 20,480 byte Word file
        - Subfolder
          - 69 byte text file
    

    如果我查看代码中的文件和文件夹(通过API),我也可以看到它们。

    如果我使用 About API Explorer 要查看我使用了多少磁盘空间,使用量显示为20480,即Word文件。然而,如果我从代码中调用About API,则使用量为69字节,即仅为文本文件。我很困惑为什么每个方法都只包含一个文件,而不是同时考虑两个方法。

    一个可能的线索是,如果我在 User.PermissionId 的财产 About 对象,当从API资源管理器调用时和从代码调用时,我看到不同的值。这让我怀疑我是否使用了两个不同的帐户。然而,我不明白这是怎么回事,因为我只有一个Gmail帐户的服务帐户。如果服务帐户与主Gmail帐户不同,那么当我在Drive UI中查看时,我不会期望看到我的代码创建的文件和文件夹。

    有人能解释这里出了什么问题吗?谢谢

    0 回复  |  直到 4 年前
        1
  •  2
  •   Nikko J.    4 年前

    当您使用 服务帐户 访问 驱动API ,它将使用 服务帐户 指向 驱动API 在 服务帐户 开车而不是开车。但是,您可以使用API访问驱动器的其他方法:

    • 使用 OAuth客户端ID 作为凭证。(这个 Quickstart for Drive API 提供了有关如何将OAuth客户端ID用于桌面应用程序的示例)。
    • 如果“服务帐户”是唯一选项,请在您的用户帐户中创建一个文件夹,移动文件并与您的服务帐户共享。

    参考:

        2
  •  1
  •   Linda Lawton - DaImTo    4 年前

    服务帐户不是你。一个服务帐户有自己的谷歌驱动器帐户,这就是你正在与之交互的内容。

    因此,通过执行about.get,您可以找到有关服务帐户驱动器帐户的信息。这就是它的空间大小。

    当你用服务帐户分割个人驱动器帐户上的文件夹时,它会授予对该文件夹的访问权限。它可以从中读取,但它不拥有您所做的文件,并且这些文件当前位于您的个人驱动器帐户上。

    如果你在服务帐户驱动器帐户上创建了一个文件夹,并上传了一些内容,那么你会在about.get中看到一个更改,因为你正在使用服务帐户存储。

    推荐文章