com.google.android.gms.common.api.ApiException:17:API:此设备无法使用Drive.API_CONNECTIONLESS

时间:2018-03-30 05:19:21

标签: android google-drive-api google-play-services backwards-compatibility google-drive-android-api

这是故事。大约三年前,我已将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(未知来源)           在com.google.android.gms.tasks.Tasks.await(未知来源)

但是,如果我使用其他签名密钥在Google控制台上创建新凭据。问题得到解决。我意识到问题源于凭证配置。但是,我无法弄清楚如何解决它,因为它可能是Google Drive SDK向后兼容性错误。还有其他人遇到过这个问题吗?任何建议都会受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您正在使用的新API仍然包含旧版本的实例和文件夹。您可以通过从Android切换到项目和外部库来进行检查。如果存在该api的旧版本,请尝试使用折射器并清理项目并重建它。希望它适合您的关注。肯定是向后兼容问题。

答案 2 :(得分:0)

在我的案例中发生的事情是我设置的授权范围与DriveClient对象支持的范围不同,只有 drives.file drive.appfolder ,如您所见here

  

注意:Google Drive Android API目前仅支持drive.file   和drive.appfolder授权范围。如果您的申请需要   驱动器中尚未提供的其他权限或功能   Android API,您必须使用Google API Java客户端。

在我的情况下,我试图使用完整的驱动器访问,并且错误与连接类型无关。我通过查看CommonStatusCodes class找到了它。

要解决这个问题,我只删除了所有其他范围,只留下 drives.file 。 您可能会,也可能不会:D,需要撤消访问权限并从您的应用中退出用户并重新登录并再次请求访问其Google驱动器。

如果你正在使用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类,并且根据他们的文档,还需要到 Connecting and Authorizing with the Google APIs Java Client

我真的希望能帮到你,不幸的是,我已经失去了几个小时,直到发现它为止。

谢谢,

相关问题