如何使用 Google 驱动器将文件从 Linux 传输到 Android

How to transfer file from Linux to Android using Google Drive

环境:

我有一个由 Android 客户端和 Linux 服务器组成的系统。文件(jpeg 图像)通过 Google 驱动器 OK 从 Android 客户端传输到 Linux 服务器。

我的传输效果很好。

稍后服务器需要根据搜索条件、位置、视图区域等将文件 (jpeg) 发送给其他客户端。所以我尝试反向传输 jpeg 文件给客户端。

应用程序和ServiceAccount都与开发者控制台中的应用程序相关联。

与应用程序关联的电子邮件和ServiceAccount 是不同的域。 (这不是 Google 工作应用程序。)

问题: 由于较新的 Android Drive API with Google Play Services 仅支持 Drive.SCOPE_FILE 该应用程序无法访问由 Linux 上的服务帐户创建的文件。

  1. 是否可以在服务器上使用 REST API 获得文件的 add/change 所有权,以便客户端可以使用 Drive 读取文件?SCOPE_FILE?到目前为止,我在这条道路上的尝试都失败了。尝试插入新所有权失败,状态为尚未实施。更新权限以向应用程序提供所有权报告此文件的权限不足。尝试修补权限会给出类似的失败消息。但是,我是这个 API 的新手,可能做错了。

  2. 是否可以使用 Android DownloadManager 服务访问文件的内容?我对这条路径所做的最好的尝试是链接的多种变体,是一个 HTML 文件,它看起来适合浏览器解析和显示:而不是 jpeg 文件的内容。同样,这对我来说是一个新领域,我可能做得不对。

  3. 根据我的研究,我似乎可以通过在 Android 客户端上使用 REST API 来完成我需要做的事情,但我真的不想这样做如果有另一条路径,则会产生开销。

在高层次上,文档(虽然很稀疏)暗示了我想做的事情。有没有人有这种数据流模式的经验?如果是这样,客户端读取服务帐户在服务器上创建的文件的适当方式是什么?

提前致谢!

经过几天探索各种兔子洞后,我能够使用 Android DownloadManger 下载该文件。诀窍是在 HTTP 请求 URI 中编写正确的查询参数:

https://drive.google.com/uc?export=download&id=[resourceId]

此外,google 驱动器文件资源安全性需要 'public' 或 'anyone with link' 才能正常工作。