使用Google Identity Credentials库遇API连接异常,如何启用连接?
问题:解决
IdentityCredentialClient调用时的API_NOT_CONNECTED错误 我尝试使用新版play-services-identity-credentials库,已添加以下依赖:
implementation("com.google.android.gms:play-services-identity-credentials:16.0.0-alpha03") implementation("androidx.work:work-runtime:2.9.1") // 必须添加,否则完全无法运行
但调用IdentityCredentialClient的任意方法时,都会抛出ApiException: 17(对应CommonStatusCodes.API_NOT_CONNECTED,即客户端调用未连接成功的API),异常栈如下:
com.google.android.gms.common.api.ApiException: 17: at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(com.google.android.gms:play-services-base@@18.4.0:3) at com.google.android.gms.common.api.internal.TaskUtil.setResultOrApiException(com.google.android.gms:play-services-base@@18.4.0:4) at com.google.android.gms.identitycredentials.internal.InternalIdentityCredentialClient$registerCredentials$1$callback$1.onRegisterCredentials(com.google.android.gms:play-services-identity-credentials@@16.0.0-alpha03:1) at com.google.android.gms.identitycredentials.internal.IIdentityCredentialCallbacks$Stub.dispatchTransaction(com.google.android.gms:play-services-identity-credentials@@16.0.0-alpha03:16) at com.google.android.gms.internal.identity_credentials.zzb.onTransact(com.google.android.gms:play-services-identity-credentials@@16.0.0-alpha03:2) at android.os.Binder.execTransactInternal(Binder.java:1505) at android.os.Binder.execTransact(Binder.java:1444)
已添加google-services.json,但问题未解决;且Google控制台仅显示“Identity Toolkit API”,请问如何启用并连接Identity Credentials API?
解决方案
1. 启用正确的API
Identity Credentials API目前处于预览阶段,需在Google Cloud控制台操作:
- 进入项目的API库页面,搜索Identity Credentials API(不要和Identity Toolkit API混淆)
- 若找到该API,直接点击“启用”;若未找到,需确认项目是否满足预览访问条件(部分预览API需申请权限)
2. 验证客户端配置
- 确保
google-services.json是从已启用该API的项目下载,且包名、SHA-1指纹与应用完全匹配 - 确认
build.gradle中已应用Google Services插件:plugins { id 'com.android.application' id 'com.google.gms.google-services' }
3. 正确初始化客户端
按官方规范初始化IdentityCredentialClient,调用前检查Play服务可用性:
// 初始化客户端 val client = IdentityCredential.getClient(context) // 检查Play服务状态 val playServicesStatus = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) if (playServicesStatus != ConnectionResult.SUCCESS) { // 引导用户更新Play服务 return }
4. 设备与凭据检查
- 确保设备上的Google Play服务版本足够新(需支持16.0.0-alpha03版本的库,建议更新到最新稳定版)
- 在Google Cloud控制台的“凭据”页面,确认已创建对应包名和SHA-1的OAuth 2.0客户端ID
内容的提问来源于stack exchange,提问作者Martin Zeitler
相关产品推荐
相关产品推荐

