Google drive api 用户断开驱动器中的应用程序会导致文件范围内的数据丢失

Google drive api 用户断开驱动器中的应用程序会导致文件范围内的数据丢失,google-drive-api,google-drive-android-api,Google Drive Api,Google Drive Android Api,我已经遇到过这个问题好几次了,但是我从来没有指出它,把它归因于延迟,我的错误代码等等。。。我终于想出了一个可以安全复制它的方案,所以我想问问那些知道它是我不了解的功能还是一个普通的bug的人。如果是后者,请告诉我哪里可以唠叨 为了简单起见,我将在API的背景上讨论它 1/让我们拥有一个在Drive_文件作用域下运行的驱动器API认证应用程序 com.google.api.services.drive.Drive svc = new Drive.Builder( AndroidHtt

我已经遇到过这个问题好几次了,但是我从来没有指出它,把它归因于延迟,我的错误代码等等。。。我终于想出了一个可以安全复制它的方案,所以我想问问那些知道它是我不了解的功能还是一个普通的bug的人。如果是后者,请告诉我哪里可以唠叨

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

1/让我们拥有一个在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 drive中创建文件(文件/文件夹)

svc.files().insert([METADATA], [CONTENT]).execute();
3/搜索使用创建的对象

svc.files().list().setQ([QUERY]).setFields([FIELDS]).execute();
当应用程序运行时,用户将执行通常的帐户选择/驱动器授权例行程序,一切正常。文件已创建,可见,可以找到。。。直到用户通过以下方式撤销授权:

设置>管理应用程序>断开与驱动器的连接

在drive.google.com上

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

我不知道这可能是故意的。如果是这样的话,我找不到一种方法,Android应用程序可以访问它以前创建的任何东西。我当然可以创建另一个具有驱动范围的“维护”应用程序来修复此问题,但是

现在,万一发生这种情况,情况会变得更糟。不仅GDAA没有修复它的驱动器作用域,而且如果执行了相同的步骤序列,并且应用程序在撤销后立即创建了一个文件/文件夹,GDAA不会抱怨,但根本不会创建该文件/文件夹。过了一段时间(几分钟),重新授权弹出,但仍然找不到同时创建的文件,并且(创建者)应用程序也丢失了撤销前的所有内容(显然在具有类似于驱动器的作用域的web应用程序中可以看到)

感谢您的耐心。

第一个问题是:

  • 用户通过以下方式撤销授权:设置>管理应用程序>断开与驱动器的连接
  • 然后重新授权该应用程序
  • 此应用程序被授权在驱动器\文件作用域中查看的文件不再被授权
  • 这是REST和Android API的预期行为

    我们不认为用户会凭直觉期望所有以前授权的文件都被重新授权。用户可能记不起以前授权的文件,通知用户这些文件将再次授权可能会导致混淆


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

    您是否希望在撤销授权之前创建的文件在重新授权时可以使用drive.file作用域?绝对可以。我(应用程序的用户)拥有应用程序创建的数千个文件。然后他/她/我玩“断开与驱动器的连接”。启动应用程序后,它会要求重新授权访问应用程序创建的文件。哎呀,什么都没有了。文件范围显示“此应用程序创建的对象”…我同意这是一种糟糕的体验。我们正在讨论更新“断开连接”对话框和应用程序范围文本,以澄清行为。@Daniel,你能看看吗?@seanpj我也遇到了与你类似的问题。如果我手动断开应用程序与appfolder的连接,GDAA将不再弹出。即使我卸载应用程序,清除缓存并重新安装,谷歌驱动器权限请求对话框也不会显示。因此,它总是失败。与GDAA不同,RESTAPI将自动显示。很高兴知道,谢谢。尽管这不太可能发生,但在测试期间它也会发生在开发人员身上。另一种情况是,Daniel在其评论中提到的对话框中的用户教育可以处理“playful”用户攻击下的文件范围产品。Matt,我不知道你是否是内幕人士,但在中还有另一个类似的问题。有什么想法吗?@Matt,我的测试表明,如果使用RESTAPI,i.imgur.com/1jJPkiS.png将在“撤销授权”完成后再次弹出。但是,如果使用了GDAA,则不再显示i.imgur.com/1jJPkiS.png。因此,驱动器操作总是失败。