为什么我会收到com.google.android.gms.common.api.ApiException:10:?

Ars*_*yan 34 android firebase-authentication

private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
    try {
        GoogleSignInAccount account = completedTask.getResult(ApiException.class); //exception is here

        // Signed in successfully, show authenticated UI.
        System.out.println("google token ---> " + account.getIdToken());
    } catch (ApiException e) {
        // The ApiException status code indicates the detailed failure reason.
        // Please refer to the GoogleSignInStatusCodes class reference for more information about this error.
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*son 59

如果您正在使用Firebase并尝试debug app:

1.首先,获取SHA-1调试密钥:

  1. 单击Gradle(从右侧面板,您将看到Gradle Bar)
  2. 点击 Tasks
  3. 点击 Android
  4. 双击signingReport(你会得到SHA-1MD5)

2.将新凭据添加到API控制台

  1. 请访问https://console.developers.google.com/apis/credentials
  2. 创建新的 OAuth Client ID
  3. 名称:( Android client (for debug)示例)
  4. 签名证书指纹:复制粘贴您的SHA-1调试密钥
  5. 输入您的包名然后保存

3.将密钥添加到Firebase项目中:

  1. 转到Project settings- > SHA certificate fingerprints- >添加SHA-1调试应用程序的密钥.

  2. 然后,您可以google-services.json在Android项目中更新您的文件.

它对我有用.

  • 不确定事情是否发生了变化或者我做错了什么,但在将 SHA-1 添加到 google API 控制台后,我无法将其添加到 Firebase。所以我跳过了第 2 步,但仍然得到了有效的解决方案。 (4认同)
  • 就我而言,我必须添加 SHA-1 指纹,因为我使用的是需要它的 Google 登录服务。 (3认同)
  • 谢谢哥们儿。你让我今天一整天都感觉很好。我在错误的SHA1上苦苦挣扎,并导致错误10以上。我的问题是,该项目基于嵌入式密钥库(&lt;project_root / debug.keystore&gt;)构建,并且SHA1是从android根目录中的默认值生成的。 (2认同)
  • 您也可以使用命令行获取 SHA-1:`./gradlewsigningReport` (2认同)

boj*_*jan 14

此状态代码表示您提供未知的服务器客户端ID.在项目的https://console.developers.google.com/apis/credentials中,您可能需要生成:OAuth客户端ID - > Web应用程序,并在Android应用中使用此Web应用程序客户端ID.

  • 为什么我需要`Web应用程序`而不是'Android`?我甚至没有使用google-auth的浏览器(而是集成帐户),我们谈论的起源是什么? (9认同)
  • 请务必在 **console.developers.google.com** 上选择当前项目,因为如果您从链接(firebase 文档页面)打开它,可能会选择另一个项目,就这么简单,该死! (5认同)
  • 也可能是您没有在同一个 https://console.developers.google.com/apis/credentials 中添加或拼错您的包,但在 Android 的 Oauth 2.0 客户端 ID 中。 (2认同)
  • 关键是Web应用程序,不是Android (2认同)
  • 我有同样的消息,并通过使用“web”clientid 而不是“android”clientid 来解决,我认为,原因是重新调整的 idtoken 用于 Web 应用程序(使用 https 请求获取额外信息)。参考文档,[developers.google.com/identity/sign-in/android](https://developers.google.com/identity/sign-in/android/backend-auth)“当您配置 Google 登录时,调用 requestIdToken 方法并向其传递您服务器的 **web** 客户端 ID。” (2认同)

lan*_*ela 7

ApiException 错误代码 10 是开发人员错误。当您的 firebase 应用程序配置不正确时,您会收到此错误。一种确定的情况是,当您想将 Firebase 身份验证与 Google Signin 一起使用时,您不为您的 Android 应用程序提供 SHA1 指纹。(这是 Google 登录的要求)。因此,提供 SHA1 指纹,将 google-services.json 配置文件下载到您的应用程序文件夹并构建。你应该很高兴去。

Google 登录会在您连接的 iOS 和网络应用程序上自动配置。要为您的 Android 应用程序设置 Google 登录,您需要在项目设置中为每个应用程序添加 SHA1 指纹。

查看常见状态错误代码


小智 7

别忘了添加

<application
...
    <meta-data
    android:name="com.google.android.gms.wallet.api.enabled"
    android:value="true" />
...
</application>
Run Code Online (Sandbox Code Playgroud)

在您的清单文件应用程序标签下。就我而言,问题是因为缺少这条线。


And*_*lix 7

我的问题是尝试使用 Google Sign-In 但我不小心在 Firebase 中输入了错误的 SHA1。尝试运行Gradle > Your app name > Tasks > android > signingReport,获取您的 SHA1 密钥并将其与 Firebase 上的密钥进行比较。如果它们不同,请更改 Firebase SHA1 密钥以匹配您从签名报告中获得的密钥。之后不要忘记下载google-services.json


小智 6

就我而言,问题出在 SHA1 和 google-services.json 文件上

我按照以下步骤解决了问题:

1.- 打开https://console.cloud.google.com/apis/credentials并在 OAuth 2.0 客户端 ID 处删除文件

2.- 打开https://console.firebase.google.com/点击齿轮图标 -> Proyect Settings -> 选择您的 Android 应用 -> 添加指纹 -> 保存 -> 并下载 google-services.json 文件

3.- 打开你的 android proyect 并替换 de google-services.json 文件 -> 点击 Sync Proyect with Gradle Files

4.- 新的 default_web_client_id 值对我来说很好用并解决了问题


小智 5

我已经通过以下步骤解决了这个问题:

1)。转到https://console.developers.google.com/并删除(Android客户端)(如果已创建)。

2)。点击创建凭据,然后点击OAuthClientID并选择android

3)。复制并粘贴您的SHA 1指纹

4)。输入您的包裹名称,然后保存

5)。转到console.firebase.com

6)。下载google-service.json,将其移至项目中的应用目录中

7)。打开google-service.json并找出客户端ID类型3,并将其用作default_web_client_id

8)。运行您的应用

  • 我有不止一份 3 类参考资料 (2认同)

小智 5

那是因为您使用了错误的default_client_token_id。要解决此问题,请转到从 firebase 下载的 JSON 文件并打开它:您的 client_id 位于“certificate_hash”之后:xxxxxxzxzxzzzxzxzxzxzxzx....祝你好运:),我希望它有所帮助。


shr*_*ing 5

我在 2-3% 的生产场合使用了这个东西,它可以无缝地适用于其他所有人。

鉴于这导致了大量的问题和不同的答案,可以公平地说这是代表 firebase 的问题。他们实现了一个包罗万象的错误例程,这只是糟糕的 api 设计。api 必须指向它失败的问题。

一个长期的解决方案是让 firebase 相信这是糟糕的 api 设计,他们需要做得更好。

我们在一起很坚强。

请使用以下内容大致为 firebase 写一张支持票:

嗨 Firebase 支持,

我的应用中有一个 com.google.android.gms.common.api.ApiException: 10 。

对我来说——以及论坛上的很多人——的问题是,你的 api 似乎有一个包罗万象的错误例程,粗略地说,“出了点问题,请修复它”。

如果你能解决这个问题,你可以让你的支持团队和很多人免于头痛。

API 应该能够找出问题所在,并从出现问题的上下文中给出更好的错误消息。

这真的是一个负担,我认为由于 Firebase 在 Android 上对这些问题具有准垄断地位,因此您有义务做得更好。

虽然这显然不是你的错,但我想鼓励你升级这个问题。

从根本上说,这是糟糕的 api 设计,并损害了其他出色的产品。

不管怎么说,还是要谢谢你。

  • 对于那些提问的人:https://firebase.google.com/support/troubleshooter/report/bugs (3认同)
  • 辉煌。我现在需要的只是支持票的链接! (2认同)