我已经遇到过这个问题几次了,但我永远不会指责它,将它归因于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应用程序)。
感谢您的耐心等待。
答案 0 :(得分:3)
第一个问题是:
这是REST和Android API的预期行为。
我们认为用户不会直观地期望所有以前授权的文件都会被重新授权。用户可能不记得先前授权的文件,并且通知用户这些文件将再次被授权可能会引起混淆。
第二个问题是GDAA在这种情况下创建文件夹的行为。我们目前不支持文件夹创建的CompletionEvents,但这是我们将要研究的内容。