Flutter 应用发布后,Google 登录不起作用

And*_*ppi 19 dart google-play firebase google-signin flutter

我使用 Flutter 开发了一个应用程序,并使用以下命令在我的设备上进行了测试:

flutter run --release
Run Code Online (Sandbox Code Playgroud)

一切正常。我还尝试使用以下方法构建应用程序:

flutter build apk --release
Run Code Online (Sandbox Code Playgroud)

并手动安装它,仍然一切正常。
我在商店上传了,现在登录不起作用了。我尝试查看 logcat,尝试登录时出现的错误是:

I/flutter: exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 12500: , null)
Run Code Online (Sandbox Code Playgroud)

我尝试添加 appCompat 依赖项并检查了 SHA1 密钥,一切都在正确的位置,我不知道为什么当我从商店下载它不再工作时。

小智 28

您的应用程序可能没有用于令牌 API 的正确 Google 凭据。

当您第一次在 Google Play 管理中心注册时,您可能选择了 Google 的应用签名服务。这样做的作用是,在您使用密钥库签署应用程序并将其上传到 Play 管理中心后,Google 实际上会使用生成的密钥库签署您的应用程序并推出该版本。您可以从控制台访问发布版本签名的密钥,在发布管理 -> 应用签名 -> 应用签名证书下。

找到证书后,您需要使用 SHA1 密钥,并生成新的 Android Oauth 凭证,然后将其添加到您的 google-services.json。如果您不使用 Firebase,则还必须将 Oauth 凭据添加到后端。

如果您查看 HarshitG 在此 Android 线程上关于同一问题的回答,您会看到一张图片,说明您可以在 Play 控制台上获取证书信息的位置。

谷歌登录无法在发布模式 apk android 下工作


Jon*_*Saw 28

您可能必须向 API 提供商(在本例中为 Firebase)注册您的 Play 商店应用签名密钥。

  1. 在您的 Google Play 管理中心中,访问设置 > 应用签名

  2. 复制 SHA-1 certificate fingerprint

    从 Google Play 应用签名密钥证书复制 SHA-1

  3. 在 Firebase 控制台中,访问设置 > 项目设置

  4. 点击 Add fingerprint

    在 Firebase 控制台中添加指纹

  5. 粘贴复制SHA-1 certificate fingerprint到Certificate fingerprint文本框

  6. 点击 Save

    粘贴 SHA-1 证书并保存

  • 另外,如果有人想知道,菜单名称将更改为 -> 应用程序签名中的应用程序完整性 (6认同)
  • 我的朋友,这就像一个魅力。谢谢 (5认同)
  • 在我的例子中,使用“上传密钥证书”的 SHA-1 证书指纹,该指纹位于“应用程序签名密钥证书”下方 (3认同)

ash*_*sut 13

在无意识地运行命令之前,让我们先弄清楚一些概念!


编辑:您还可以查看有关此主题的长篇博客文章,其中包含详细插图。

您的应用程序需要由签名证书/密钥库(即 .jks 文件)签名才能创建发布版本。发布版本是在调试模式或发布模式下创建的(我们将进一步了解这一点)

您会遇到 3 种类型的密钥库文件:-

  1. 使用生成的调试密钥库./gradlew signingReport(创建flutter项目时默认提供调试密钥)

  2. 上传按照这些说明生成的密钥库(这对于创建“发布版本”很有用。因此请使用它而不是调试密钥)

  3. 部署密钥库/ Play 签名密钥库,当您首次尝试在其中上传应用程序包时,由 Play 管理中心自动生成。(您可以在 找到它Setup > App integrity > App signing)。此密钥库由 Google 保留。您无权访问其.jks文件。所以它很安全,不会迷路。


现在,我想说,如果您希望在 Play 商店上获取您的应用程序,请不要生成Debug keystore。生成并始终仅使用您的上传密钥库。

为什么这很重要?

  • 调试密钥库只能在调试模式(而不是发布模式)下对您的应用程序进行签名。

    即使您尝试使用flutter build appbundlewith--release标志,您也会得到一个在调试模式app-release.aab下签名的!您永远无法在 Play 商店中发布以调试模式签名的应用程序。

  • 上传密钥库可以在发布模式下对您的应用程序进行签名,并可以在 Play 商店上发布。
  • 因此,如果您打算将来发布您的应用程序,请按照这些说明生成上传密钥库,并对您的 gradle 文件进行相应的更改。不要生成调试密钥库,因为您不需要它。

这个解释应该让您明白为什么有些答案是错误的,建议获取调试密钥库


现在是上述问题的正确答案。

某些 Google Play 服务(例如 Google 登录和应用邀请)要求您提供SHA-1签名证书

因此,如果您使用上传密钥库对应用程序进行签名,请将上传密钥库SHA-1的指纹添加到Firebase Console > Settings Icon > Project settings > Add fingerprint添加 SHA-1 指纹

  • 您可以使用以下SHA-1方式获取上传密钥库keytool -v -list -keystore /path/to/upload-keystore.jks

  • 此外,您还可以在 Play Console 上获取上传密钥库SHA-1和部署密钥库:Setup > App integrity > App signing


SHA-1我应该添加哪一个?SHA-1Play 管理中心有两个。

您必须将两个SHA-1指纹添加到 firebase 中。

为什么?

  • 对于发布评论,您始终必须提交使用Upload keystore签名的应用程序。Play 管理中心将仅接受使用同一上传密钥库签名的应用更新提交(因此请确保上传密钥库的安全)。这就是为什么,要使上传密钥库签名的应用程序正常工作,您需要在 Firebase 中添加上传密钥库的SHA-1。
  • 您的发布审核被接受后,您的应用将使用 Play Console 的部署密钥库(自动)再次签名,然后将其发布到 Play 商店。这就是为什么要使部署密钥库签名的应用程序正常工作,您需要在 Firebase 中添加部署密钥库的SHA-1。


CHA*_*HE. 12

转到您的 google play 控制台,在发布管理中,您会找到应用签名,在其下有两个 Sha 密钥,将它们不带 sha 部分复制到 firebas 项目 SHA 证书指纹 apk 将在此之后工作。


小智 8

对于那些遇到此类问题的人,他们最好查看分配给其 Firebase 帐户的 SHA 证书指纹。发布和调试 SHA 证书指纹都是必需的。为此,您可以:

  1. 导航到项目中的 android 文件夹
  2. 运行这个命令 ./gradlew signingReport
  3. 查找发布 SHA 证书指纹
  4. 查找调试 SHA 证书指纹
  5. 将它们添加到 firebase 帐户 SHA 证书指纹
  6. 重新下载 google-services.json
  7. 将其添加到您的应用程序级文件夹中您就完成了!