使用Google One Tap Sign In遇Missing Feature报错,求技术解决
Google One Tap Sign In 报错
Missing Feature{name=auth_api_credentials_begin_sign_in, version=7} 排查与解决 问题现象
调用Google One Tap登录功能时,触发如下错误提示:
Missing Feature{name=auth_api_credentials_begin_sign_in, version=7}
错误始终发生在登录失败后的重试代码段:
.addOnFailureListener { beginSignInException -> oneTapClient.beginSignIn(signUpRequest) .addOnSuccessListener(requireActivity()) { beginSignUpResult -> IntentSenderRequest.Builder(beginSignUpResult.pendingIntent).build() .also { intentSenderRequest -> intentSenderRequestActivityResultLauncher.launch(intentSenderRequest) } } .addOnFailureListener { beginSignUpException -> Log.d(TAG, "Google sign up failed:onResume: ${beginSignUpException.localizedMessage}") Toast.makeText(requireContext(), "Google sign up failed:${beginSignUpException.localizedMessage}", Toast.LENGTH_SHORT).show() } Log.d(TAG, "Google sign in failed:onResume: ${beginSignInException.localizedMessage}") Toast.makeText(requireContext(), "Google sign in failed:${beginSignInException.localizedMessage}", Toast.LENGTH_SHORT).show() }
错误原因
- Server Client ID 为空:代码中
setServerClientId("")传入空字符串,Google One Tap需要有效的Server Client ID完成身份验证,空ID会直接导致API调用失败并触发功能缺失错误。 - 依赖版本不兼容:当前使用的
play-services-auth:20.4.0版本可能与设备上的Google Play Services版本不匹配,旧版Play Services不支持该API的v7版本要求。 - 请求配置不规范:SignInRequest和SignUpRequest的GoogleIdTokenRequestOptions配置缺少必要验证参数,导致API无法识别合法请求。
解决方案
1. 配置有效的Server Client ID
- 登录Google Cloud Console,为应用创建OAuth 2.0客户端ID(根据后端验证需求选择Android或Web类型)。
- 将获取到的真实Server Client ID填入代码:
// 替换为你的真实Server Client ID .setServerClientId("your-actual-server-client-id")
2. 更新Play Services Auth依赖
将play-services-auth依赖升级到最新稳定版本,确保与Google Play Services API版本兼容:
implementation 'com.google.android.gms:play-services-auth:20.7.0' // 或更高稳定版本
3. 完善请求配置
优化SignInRequest和SignUpRequest的配置,确保符合Google One Tap要求:
- 根据业务需求合理设置
setFilterByAuthorizedAccounts(); - 若不需要密码登录功能,可移除
setPasswordRequestOptions()配置,减少不必要的API依赖:
signInRequest = BeginSignInRequest.builder() .setGoogleIdTokenRequestOptions( BeginSignInRequest.GoogleIdTokenRequestOptions.builder() .setSupported(true) .setServerClientId("your-actual-server-client-id") .setFilterByAuthorizedAccounts(true) .build() ) .setAutoSelectEnabled(true) .build()
4. 验证设备Play Services版本
确保测试设备上的Google Play Services为最新版本,可通过Google Play商店完成更新,避免因旧版本不支持API功能导致错误。
内容的提问来源于stack exchange,提问作者Squall Huang
相关产品推荐
相关产品推荐

