用户断开驱动器中的应用程序会导致FILE范围

时间:2015-05-11 16:28:38

标签: google-drive-api google-drive-android-api

我已经遇到过这个问题几次了,但我永远不会指责它,将它归因于GDAA's延迟,我的错误代码等等......我终于设法提出了一个场景我可以安全地重现它,所以我想问知道的人是否是我不理解的功能或者是一个普通的bug。如果是后者,请指出我可以唠叨的地方。

为简单起见,我将在REST API的背景上讨论它。

1 /让我们拥有一个在DRIVE_FILE范围内运行的 Drive API 认证应用

com.google.api.services.drive.Drive svc = 
  new Drive.Builder(
    AndroidHttp.newCompatibleTransport(), 
    new GsonFactory(),
    GoogleAccountCredential
    .usingOAuth2( context, Collections.singletonList(DriveScopes.DRIVE_FILE))
  ).build();

2 /使用

在Google云端硬盘中创建文件(文件/文件夹)
svc.files().insert([METADATA], [CONTENT]).execute();

3 /使用

搜索您创建的对象
svc.files().list().setQ([QUERY]).setFields([FIELDS]).execute();

当应用程序运行时,用户将执行通常的帐户选择/驱动器授权例程,一切都按预期工作。创建文件,可见,可以找到......直到用户通过

撤销授权
  

设置>管理应用>断开驱动器

drive.google.com 中的

之后,如果Android应用程序重新启动(并重新授权),则撤销之前创建的任何对象都不可见。

可能是设计,我不知道。如果是这种情况,我无法找到Android应用程序如何获取之前创建的任何内容。我当然可以使用DRIVE范围创建另一个“维护”应用来解决这个问题,但是......

现在,在GDAA的情况下,情况变得更糟。不仅GDAA没有DRIVE范围来修复它,而且如果完成相同的步骤序列并且应用程序在撤销后立即创建文件/文件夹,GDAA不会抱怨,但根本不会创建文件/文件夹。过了一会儿(分钟),重新授权弹出,但是,同时创建的文件无处可寻,撤销之前的所有内容都会丢失给(创建者)应用程序(它当然可见显然具有DRIVE范围的Web应用程序)。

感谢您的耐心等待。

1 个答案:

答案 0 :(得分:3)

第一个问题是:

  1. 用户通过以下方式撤销授权:设置>管理应用>断开驱动器
  2. 然后重新授权该应用
  3. 此应用程序有权查看DRIVE_FILE范围的文件不再获得授权。
  4. 这是REST和Android API的预期行为。

    我们认为用户不会直观地期望所有以前授权的文件都会被重新授权。用户可能不记得先前授权的文件,并且通知用户这些文件将再次被授权可能会引起混淆。

    第二个问题是GDAA在这种情况下创建文件夹的行为。我们目前不支持文件夹创建的CompletionEvents,但这是我们将要研究的内容。