【问题标题】:Get download link of file in Service Account Google API在 Service Account Google API 中获取文件的下载链接
【发布时间】:2017-05-04 12:20:12
【问题描述】:

我已成功使用服务帐户上传文件。我使用身份验证服务帐户上传、列出和更新文件。

我在浏览器中看不到文件。只有我的应用程序可以查看它。但是我怎样才能获得上传文件的下载链接呢?

谁能帮助我并给我一个获取下载链接的指南?

【问题讨论】:

    标签: google-api google-drive-api google-oauth service-accounts


    【解决方案1】:

    请记住,服务帐户不是您。服务帐户是您将文件上传到服务帐户 Google 驱动器帐户的虚拟用户。然后它上传的文件将归它所有。

    文件资源应包含这些链接之一。您可以使用它们向其他用户显示文件。

    • 将用户链接到文件 — file resource 中的 webContentLink(下载)
    • 将用户链接到文件 - webViewLink 表单 file resource(将在 Google 云端硬盘网站中打开)

    webViewLink 字符串 用于在相关 Google 编辑器或浏览器查看器中打开文件的链接。

    webContentLink 字符串 用于在浏览器中下载文件内容的链接。这仅适用于云端硬盘中包含二进制内容的文件。

    您可能必须让服务帐户将文件设置为公开或与您共享文件,然后才能使用这些链接中的任何一个。检查Permissions

    【讨论】:

    • 我无法查看。如果我设置为公开?其他人可以使用 webContentLink 查看文件吗?但是如果使用浏览器 Google Drive,他们无法查看它,因为该文件没有共享给他们?
    • 是的,他们应该能够
    【解决方案2】:

    com.google.api.services.drive.model.File 文档 = null;

    try {
         document = serrvice.files().get(googleFileId).setFields("*").execute();
    } catch (IOException e) {
         e.printStackTrace();
    }
    

    然后 API 返回文件的全部资源。这是针对 v3 驱动 API 的。

    如果你使用 v2 驱动 api 使用:

    try {
         document = serrvice.files().get(googleFileId).execute();
    } catch (IOException e) {
         e.printStackTrace();
    }
    

    然后API返回文件的全部资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多