故事是这样的。大约三年前,我将Google Drive Android SDK (8.1.0)集成到我的应用程序(AnyCopy)中。我按照教程进行了正确的设置,包括添加凭据和api密钥。一切都很正常。我可以毫无问题地备份和恢复我的数据。即使是今天,如果我从Google Play上下载它,它仍然可以正常工作。
最近我一直在尝试重构AnyCopy并将最新的Google Drive Android SDK (Google Play服务版本号12.0.1 )集成到我的应用程序中,但遇到了一个奇怪的错误消息
此设备上不提供
java.util.concurrent.ExecutionException: com.google.android.gms.common.api.ApiException: 17: API: Drive.API_CONNECTIONLESS。在com.google.android.gms.tasks.Tasks.zzc(Unknown源)在com.google.android.gms.tasks.Tasks.await(Unknown源)
但是,如果我在Google控制台上使用不同的签名密钥创建了一个新凭据。问题就解决了。我意识到问题的根源在于凭据配置。然而,我不知道如何解决它,因为这可能是一个Google Drive SDK向后兼容的错误。还有没有人遇到过这个问题?任何建议他都将不胜感激。
发布于 2018-04-12 02:21:00
我也犯了同样的错误。我创建了一个新项目,并获得了google API的凭据,但忘记了启用Google Drive API。转到仪表板并启用google drive API就起到了作用。希望这能有所帮助。
发布于 2018-04-16 02:10:30
如果存在该api的旧版本,请尝试使用refractor并清理项目并重新生成它。希望它能满足你的担忧。这肯定是一个向后兼容性的问题。
发布于 2018-06-03 06:17:52
在我的例子中,我设置了一个与DriveClient对象支持的作用域不同的授权作用域,该作用域只有、drives.file、和here,正如您看到的here
注意: Google Drive Android API目前只支持drive.file和drive.appfolder授权范围。如果您的应用程序需要Drive Android API中尚未提供的其他权限或功能,则必须使用Google API Java客户端。
在我的例子中,我试图使用全驱动器访问,错误实际上与连接类型无关。我是通过查看CommonStatusCodes class找到的。
为了解决这个问题,我删除了所有其他作用域,只留下了drives.file。您可能需要,也可能不需要:D,需要撤销访问权限并从您的应用程序中注销用户,然后重新登录并再次请求访问他们的google drive。
如果你使用的是firebase,你的代码看起来会有点像这样:
AuthUI.IdpConfig.GoogleBuilder()
.setScopes(Arrays.asList(Scopes.DRIVE_FILE))
.build()
但是如果你只直接使用GoogleSignInClient,它会是这样的:
GoogleSignInOptions signInOptions =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(Drive.SCOPE_FILE)
.build();
GoogleSignIn.getClient(this, signInOptions)
如果你需要的不仅仅是访问文件和appfolder,你将不能使用DriveClient类,根据他们的文档,将需要。
我真的希望这对你有帮助,不幸的是,我已经浪费了几个小时才注意到这一点。
谢谢,
https://stackoverflow.com/questions/49568796
复制相似问题