首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >API 17: com.google.android.gms.common.api.ApiException::Drive.API_CONNECTIONLESS在此设备上不可用

API 17: com.google.android.gms.common.api.ApiException::Drive.API_CONNECTIONLESS在此设备上不可用
EN

Stack Overflow用户
提问于 2018-03-30 13:19:21
回答 3查看 6.7K关注 0票数 17

故事是这样的。大约三年前,我将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向后兼容的错误。还有没有人遇到过这个问题?任何建议他都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2018-04-12 02:21:00

我也犯了同样的错误。我创建了一个新项目,并获得了google API的凭据,但忘记了启用Google Drive API。转到仪表板并启用google drive API就起到了作用。希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2018-04-16 02:10:30

如果存在该api的旧版本,请尝试使用refractor并清理项目并重新生成它。希望它能满足你的担忧。这肯定是一个向后兼容性的问题。

票数 0
EN

Stack Overflow用户

发布于 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,你的代码看起来会有点像这样:

代码语言:javascript
复制
AuthUI.IdpConfig.GoogleBuilder()
                    .setScopes(Arrays.asList(Scopes.DRIVE_FILE))
                    .build()

但是如果你只直接使用GoogleSignInClient,它会是这样的:

代码语言:javascript
复制
GoogleSignInOptions signInOptions =
            new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestScopes(Drive.SCOPE_FILE)
                    .build();
GoogleSignIn.getClient(this, signInOptions)

如果你需要的不仅仅是访问文件appfolder,你将不能使用DriveClient类,根据他们的文档,将需要。

我真的希望这对你有帮助,不幸的是,我已经浪费了几个小时才注意到这一点。

谢谢,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49568796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档