我想将现有的 Google Sign-In API Google Sign-In API迁移到Google Identity Service,但是,当尚未添加 Google 帐户时,Google Identity Service 会返回“16:找不到匹配的凭据”。
这是重现的步骤:
SignInClient client = Identity.getSignInClient(getContext());
BeginSignInRequest.GoogleIdTokenRequestOptions.Builder builder = BeginSignInRequest.GoogleIdTokenRequestOptions.builder()
.setSupported(true)
// Your server's client ID, not your 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) {
//handle error
}
})
.addOnFailureListener(getActivity(), e -> {
// No saved credentials found. Launch the One Tap sign-up flow, or
// do nothing and continue presenting the signed-out UI.
});
- 得到 16:找不到匹配的凭据
通过使用旧界面Google Sign-In API,它按预期工作,它创建了 Google 帐户并登录用户。此外,当帐户管理器中有 Google 帐户时, Google 身份服务将起作用。