我一直在关注the guide for setting up One Tap sign-in and sign-up on Android ,并使用了the example code to set up the One Tap client ,但每次我调用oneTapClient.beginSignIn(signInRequest)
我收到了 OnFailureListener
的回电的onFailure()
:
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)
这是什么意思?为什么我会得到这个?我确定我一定在设置中遗漏了一些东西。
最佳答案
实际上有几种不同的情况,您会给出相同的错误消息
情况1
我确定我已经上传了调试证书的 SHA-1 签名,但事实并非如此。
文档说明了这一点:
On the Credentials page, create an Android client ID for your app if you don't already have one. You will need to specify your app's package name and SHA-1 signature.
在实践中,您需要转到提到的页面并创建一个
OAuth Client ID
并使用旧的 keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
获得 SHA-1 .案例#2
出于某种原因,如果您指定
setFilterByAuthorizedAccounts(true)
,也会使用相同的错误代码和错误消息。作为用户,您没有任何已获授权登录您的应用程序的 Google 帐户。如问题中链接的文档中所述,您可以先使用
setFilterByAuthorizedAccounts(true)
帮助用户选择与上次相同的帐户,然后 setFilterByAuthorizedAccounts(false)
以便为应用程序创建新用户。案例#3
用户未使用设备上的任何 Google 帐户登录。
关于android - 在 Android 上进行一键登录和注册时获取 "16: Cannot find a matching credential",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61768804/