迁移Google Sign-In API至Google Identity Service出现16号错误如何解决?
Google Identity Service 无设备Google账号场景调用返回16错误问题
我计划将现有项目使用的Google Sign-In API迁移至Google Identity Service,但在设备未添加Google账号的场景下调用接口会返回*"16: Cannot find a matching credential"*错误。
复现步骤
- 确保设备未配置任何Google账号,操作路径:设置 -> 账号:

- 使用如下代码发起Google登录请求:
SignInClient client = Identity.getSignInClient(getContext()); BeginSignInRequest.GoogleIdTokenRequestOptions.Builder builder = BeginSignInRequest.GoogleIdTokenRequestOptions.builder() .setSupported(true) // 此处为服务端client ID,而非Android端client ID .setServerClientId(clientId) .setFilterByAuthorizedAccounts(false); BeginSignInRequest signInRequest = BeginSignInRequest.builder() .setGoogleIdTokenRequestOptions(builder.build()) .build(); client.beginSignIn(signInRequest) .addOnSuccessListener(getActivity(), result -> { try { startIntentSenderForResult( result.getPendingIntent().getIntentSender(), RC_SIGN_IN, null, 0, 0, 0, null); } catch (IntentSender.SendIntentException e) { // 处理错误 } }) .addOnFailureListener(getActivity(), e -> { // 未找到已保存的凭据,可启动一键注册流程,或不做操作继续展示未登录UI });
- 调用后收到
16: Cannot find a matching credential错误
相关说明
使用旧版Google Sign-In API时该场景运行正常,会引导用户添加Google账号并完成登录;且Google Identity Service在设备账号管理器中已有Google账号的场景下可正常运行。
内容的提问来源于stack exchange,提问作者Andy Witrisna
相关产品推荐
相关产品推荐

