首页 > 解决方案 > 在 Android 上进行 One Tap 登录和注册时出现“16:找不到匹配的凭据”

问题描述

我一直遵循在 Android 上设置 One Tap 登录和注册的指南,并使用示例代码设置 One Tap 客户端,但每次我打电话时都会oneTapClient.beginSignIn(signInRequest)收到一个回调OnFailureListeneronFailure()

com.google.android.gms.common.api.ApiException: 16: Cannot find a matching credential.
    at com.google.android.gms.common.api.internal.TaskUtil.setResultOrApiException(com.google.android.gms:play-services-base@@17.2.1:6)
    at com.google.android.gms.internal.auth-api.zzaj.zzc(com.google.android.gms:play-services-auth@@18.0.0:2)
    at com.google.android.gms.internal.auth-api.zzaa.dispatchTransaction(com.google.android.gms:play-services-auth@@18.0.0:6)
    at com.google.android.gms.internal.auth-api.zzc.onTransact(com.google.android.gms:play-services-auth@@18.0.0:13)
    at android.os.Binder.execTransactInternal(Binder.java:1021)
    at android.os.Binder.execTransact(Binder.java:994)

这是什么意思?为什么我会得到这个?我确定我一定在设置中遗漏了一些东西。

标签: android

解决方案


实际上有几种不同的情况,您会给出相同的错误消息

情况1

我确定我已经上传了调试证书的 SHA-1 签名,但事实并非如此。

文档说明了这一点:

在 Credentials 页面上,为您的应用程序创建一个 Android 客户端 ID(如果您还没有)。您需要指定应用的包名称和 SHA-1 签名。

在实践中,您需要转到提到的页面并创建一个OAuth Client ID并获得具有良好旧的 SHA-1 keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

案例#2

setFilterByAuthorizedAccounts(true)出于某种原因,如果您指定并且您作为用户没有任何已被授权登录您的应用程序的 Google 帐户,那么也会使用相同的错误代码和错误消息。

如问题中链接的文档中所述,您可以首先使用它setFilterByAuthorizedAccounts(true)来帮助用户选择与上次相同的帐户,然后setFilterByAuthorizedAccounts(false)才能为应用程序创建新用户。

案例#3

用户未使用设备上的任何 Google 帐户登录。


推荐阅读