Android Google 云端硬盘 Api 跨设备和帐户共享文件

Android Google Drive Api share files across devices and accounts

我正在使用 Google 驱动器 Android API。我的应用程序正在将文件同步到 google 驱动器文件夹。这工作正常。
此外,我想与其他用户共享这些文件夹和文件。不幸的是,从同一应用程序中的另一台设备和帐户,我只能访问我通过 Files/Folder 选择器选择的 files/folders(参见 https://github.com/googledrive/android-demos/tree/master/app/src/main/java/com/google/android/gms/drive/sample/demo

我的 GoogleApiClient 正在获取范围:Drive.SCOPE_FILE。所以描述说:

Per-file access to files created or opened by the app

既然我在另一台设备上使用不同的帐户使用相同的应用程序,我不应该能够访问这些文件吗?顺便说一句,在另一台设备上使用相同的帐户这是有效的。

还有其他解决办法吗?我已经检查了 REST API 但恐怕这会使整个代码更加复杂。

您只需授权用户即可。请注意,在您的应用程序发送到 Drive API 的每个请求中都必须包含授权令牌。该令牌还向 Google 标识您的应用程序。您必须实现 OAuth 2.0 才能授权请求。不支持其他授权协议。

对驱动器 API 的所有请求必须由经过身份验证的用户授权。

OAuth 2.0 的授权过程或 "flow," 的详细信息因您编写的应用程序类型而有所不同。以下一般流程适用于所有申请类型:

  • 创建应用程序时,您可以使用 Google API 控制台注册它。 Google 然后提供您稍后需要的信息,例如客户端 ID 和客户端密码。
  • 在 Google API 控制台中激活驱动器 API。 (如果 API 未在 API 控制台中列出,则跳过此步骤。)
  • 当您的应用程序需要访问用户数据时,它会请求 Google 特定的访问范围。
  • Google 向用户显示一个同意屏幕,要求他们授权您的应用程序请求他们的一些数据。
  • 如果用户同意,则 Google 会为您的应用程序提供一个短期访问令牌。
  • 您的应用程序请求用户数据,将访问令牌附加到请求。
  • 如果Google确定您的请求和令牌有效,则returns请求的数据。

一些流程包括额外的步骤,例如使用刷新令牌获取新的访问令牌。有关各种类型应用程序的流程的详细信息,请参阅 Google 的 OAuth 2.0 文档。

范围: https://www.googleapis.com/auth/drive.file - 对应用程序创建或打开的文件的按文件访问权限

Full access to all files 在用户的云端硬盘 (https://www.googleapis.com/auth/drive) 中对于某些应用程序可能是必需的。例如,设计用于同步文件的应用需要这种级别的云端硬盘访问权限。具有与列出或重组文件相关的特殊需求的应用程序可能需要完整范围。

对于所有对解决方案感兴趣的人:

  • 我发现无法将共享文件与 google android 本机 API 同步。 (除了文件选择器)
  • 如果你想这样做,你必须使用 google 驱动器支架 API。

此解决方案的一点优势。我认为 java rest API 更适合这种工作。代码以这种方式变得更具可读性。