繁体   English   中英

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

[英]com.google.android.gms.common.api.ApiException: 17: API: Drive.API_CONNECTIONLESS is not available on this device

这是故事。 大约三年前,我将 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 向后兼容性错误。 还有其他人遇到过这个问题吗? 任何建议他都会高度赞赏。

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

您使用的新 API 仍然具有旧版本的实例和文件夹。 您只需从 Android 切换到您的项目和外部库即可进行检查。 如果存在该 api 的旧版本,请尝试 refractor 并清理项目并重建它。 希望它适合您的关注。 当然是向后兼容性问题。

在我的情况下发生的事情是,我设置的授权范围与DriveClient对象支持的范围不同,只有drive.filedrive.appfolder,如您在此处看到的:

注意:Google Drive Android API 目前仅支持 drive.file 和 drive.appfolder 授权范围。 如果您的应用程序需要 Drive Android API 中尚不可用的其他权限或功能,您必须使用 Google APIs Java 客户端。

就我而言,我试图使用完整的驱动器访问权限,但错误与连接类型并没有真正相关。 我通过查看CommonStatusCodes 类找到了它。

为了解决这个问题,我只是删除了所有其他范围,只留下了drive.file 您可能需要,也可能不需要:D,需要撤销访问权限并从您的应用中注销用户,然后重新登录并再次请求访问他们的谷歌驱动器。

如果您使用的是 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)

如果您需要的不仅仅是访问文件和应用程序文件夹,您将无法使用 DriveClient 类,并且根据他们的文档,将需要Connecting and Authorizing with the Google APIs Java Client

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

谢谢,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM