Android Google Drive Api跨设备和帐户共享文件

时间:2016-07-25 06:36:57

标签: android scope share google-drive-android-api unauthorized

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

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

  

对应用程序创建或打开的文件的每文件访问权限

由于我在另一台使用不同帐户的设备上使用相同的应用程序,我不能访问这些文件吗?顺便说一下,在其他设备上使用相同的帐户。

还有其他解决方案吗?我已经检查过REST API,但我担心这会使整个代码变得更加复杂。

2 个答案:

答案 0 :(得分:4)

对于对解决方案感兴趣的每个人:

  • 我发现无法使用google android原生API同步共享文件。 (除了文件选择器)
  • 如果您要这样做,则必须使用google drive rest API。

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

答案 1 :(得分:0)

您只需要授权用户。请注意,应用程序发送到Drive API的每个请求都必须包含授权令牌。该令牌还可识别您的Google应用程序。您必须提出OAuth 2.0来授权请求​​。不支持其他授权协议。

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

OAuth 2.0的授权流程或“流程”的详细信息会有所不同,具体取决于您编写的应用程序类型。以下一般过程适用于所有应用程序类型:

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

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

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

某些应用可能需要用户的云端硬盘(https://www.googleapis.com/auth/drive)中的

Full access to all files。例如,用于同步文件的应用程序需要此级别的驱动器访问权限。与列出或重组文件相关的具有特殊需求的应用可能需要完整的范围。