我正在使用新的Google云端硬盘Android API。这是我从Google's android-samples repo复制的演示代码。
GoogleSignInAccount signInAccount = GoogleSignIn.getLastSignedInAccount(this);
if (signInAccount != null && signInAccount.getGrantedScopes().containsAll(requiredScopes)) {
initializeDriveClient(signInAccount);
}
else
{ ... }
我面临的问题是,即使我从云端硬盘中删除了该应用,getLastSignedInAccount()
仍然会返回该帐户,并且帐户上的操作(例如添加文件)仍然成功。我想,返回GoogleSignInAccount
对象很好,但它不应允许对它进行操作。我在Drive中双重检查,当API返回成功时,没有添加任何文件(因为我已取消链接应用程序)。这里出了什么问题?
是的,当我手动同步我的设备上的帐户时,它有效。在这种情况下,虽然getLastSignedInAccount()
返回了对象,但操作确实失败了。
PS:我要求SCOPE_FILE
和SCOPE_APPFOLDER
范围。
答案 0 :(得分:0)
这看起来像是理想的行为。
只有在同步之后,GoogleSignIn.getLastSignedInAccount(this)
才会知道,而不是在此之前。如您所见,此方法是非阻塞的。
作为改进,API执行操作的调用应返回类似403 UNAUTHORIZED