首页 > 解决方案 > 即使删除应用程序,Google Drive Android API 也会返回成功

问题描述

我正在使用新的 Google Drive Android API。这是我从Google 的 android-samples repo复制的演示代码。

GoogleSignInAccount signInAccount = GoogleSignIn.getLastSignedInAccount(this);
if (signInAccount != null && signInAccount.getGrantedScopes().containsAll(requiredScopes)) {
            initializeDriveClient(signInAccount);
}
else 
{ ... }

我面临的问题是,即使我从云端硬盘中删除了该应用程序,getLastSignedInAccount()仍然会返回帐户并且帐户上的操作(例如添加文件)仍然成功。我想返回GoogleSignInAccount对象很好,但它不应该允许对其进行操作。我再次检查了云端硬盘,当 API 返回成功时没有添加任何文件(因为我已经取消了应用程序的链接)。这里出了什么问题?

是的,当我在我的设备上手动同步帐户时它起作用了。在这种情况下,虽然getLastSignedInAccount()返回了对象,但操作确实失败了。

PS:我要求SCOPE_FILESCOPE_APPFOLDER范围。

标签: androidauthorizationgoogle-play-servicesgoogle-drive-android-api

解决方案


这看起来像所需的行为。

只有在同步之后,才会GoogleSignIn.getLastSignedInAccount(this)知道,而不是在那之前。如您所见,此方法是非阻塞的。

作为一项改进,执行操作的 API 调用应返回类似403 UNAUTHORIZED


推荐阅读