草庐IT

关于java:此应用无权使用Firebase身份验证。请验证在Firebase控制台中配置了正确的包名和SHA-1

codeneng 2023-03-28 原文

This app is not authorized to use Firebase Authentication.Please verify that the correct package name and SHA-1 are configured in the Firebase Console

Firebase 身份验证工作正常,调试构建突然开始失败,没有任何代码更改,记录以下消息

D/PhoneAuthActivity( 7392): signInWithCredential:failure:com.google.firebase.auth.FirebaseAuthException: This app is not authorized to use Firebase Authentication. Please verifythat the correct package name and SHA-1 are configured in the Firebase Console. [ App validation failed ].

成功登录和失败之间唯一值得注意的操作是 android studio 升级。


更新(2021 年 10 月 11 日):

  • 从 Play 商店控制台中找到 SHA-1SHA-256 BOTH certificateS 指纹。

Play store Console > Your project > Release > Setup > App integrity

  • SHA-1SHA-256 指纹一个一个地放置到您的 Firebase 应用程序中。

Firebase Console > Your project > Settings of the app > Add Fingerprint

注意以下几点

  • 如果您使用模拟器进行电话 OTP 验证,则它不会工作,因为它没有 sim。因此,请尝试将其安装在您的手机上(使用 sim 卡)。
  • 确保您使用的是最新/更新的 google-services.json。
  • 正确遵循启用应用验证步骤。并且 Android 设备验证已启用。
  • 确保在启用 Android 设备验证时从下拉列表中选择了正确的项目。
  • 要在 Firebase 项目中添加的 SHA-1SHA-256 指纹。
  • 完成所有工作后,请确保您使用的是最新/更新的 google-services.json 文件。
    • 尝试了多个建议。这是唯一有效的! 1
    • 这是唯一有意义的。
    • 是的,我相信这是 2019 年最大的混乱来源。一些 Firebase/React 教程告诉您使用 keytool 从您的发布密钥中获取 SHA 指纹,但实际上您签署了"让 Google 管理您的应用程序证书" Play 控制台,这就是您必须在 Firebase 控制台上复制和粘贴的内容。
    • 这是最好的答案
    • 对于我自己,我不得不从 android studio 粘贴实际的 SHA1
    • 你拯救了我的一天SSS
    • 无需再次编译应用程序即可完美运行,它可以直接从 Play Store 和 Firebase 的控制台设置中运行......
    • 即使在将应用程序发布到商店后也有帮助
    • 这将需要时间或直接更新。我执行上述步骤但得到相同的错误
    • @MaulikSantoki 它不应该超过一个小时。
    • 非常感谢。这是最好的答案
    • 还要注意它是否是您要使用的调试密钥工具。
    • 有关更多信息 - 新 Play 管理中心中的应用签名已更改为应用完整性。这个答案对我来说更好。它不包括再次发布应用程序并等待审核。
    • @KishanSolanki我也有这个问题,但就我而言,我正在尝试模拟器。它在真实设备上运行良好。
    • @RumitPatel 我知道兄弟我们应该在真实设备上测试它。离开真实设备,我正在应用程序的实时版本中测试它(不是在调试中),但仍然无法正常工作。这似乎是一个古老的答案。如果您现在(今天)尝试此操作,它将无法正常工作。
    • @KishanSolanki 这不是一个旧答案,只需要使用一些附加信息对其进行更新。实际上,添加了一个名为"启用应用程序验证"的步骤。另一件事是在 Firebase 控制台上添加 Sha-256。它完成了。如果问题仍然存在,请告诉我,我很乐意提供帮助。 :-)
    • @RumitPatel 你知道吗,我也已经添加了。但在那之后,我面临一个新的问题。我确实也问过 StackOverflow 的问题,这里是链接 stackoverflow.com/q/66757620/8874958 ,请检查您是否可以提供帮助。
    • 谢谢。添加 SHA-256 指纹(到现有的 SHA-1)对我来说就足够了
    • 如果您选择了 Google Managed App Signing Key,请更新此步骤是强制性的答案,否则您可以使用 signingReport gradle 任务获取签名详细信息并将 SHA 添加到 firebase 甚至使用 apksigner -verify --print-certs <path/to/apk>
    • @guneetgstar,正确。但是 google-play 上的大多数项目都选择了 App Signing Key
    • 大多数但不是全部。正如我所说的,密钥可以通过其他方式提取,因此如果他不知道他发布的应用程序是否已经选择了 Google App Signing key,他最终可能仍会添加错误的密钥
    • 谁能解释 Play Store SHA 和关键工具 SHA 之间的区别?很困惑去哪
    • @ishandutta2007 应该将此标记为正确答案!
    • 这对我有用。甚至我从 android studio 为签名的 APK 生成 SHA1 和 SHA-256 并添加到 firebase 但没有工作。然后我按照这个解决方案工作了!!!!!!
    • 在开发过程中,是否有人尝试使用模拟器查看控制台,但输入的电话号码实际上是发送到真实设备的?当然,模拟器没有 SIM 卡,但输入的电话号码是有效的。这意味着我同时使用模拟器设备和真实设备。
    • 非常感谢,不知何故我们错过了,这个答案挽救了我们的一天。
    • 我对此解决方案有一个主要问题。在我的设备上,这就像魅力一样,我注册了我的应用程序测试以从应用程序商店获取我的应用程序。但是,我的客户(以与我相同的方式获取应用程序)抱怨收到此错误。我们之前遇到过这个错误,然后我就这样做了。它是为我修好的,但不适用于我的任何客户。请问这可能是什么根本原因?
    • @MartinBraun,我多次遇到同样的问题。我不知道根本原因,但我删除了所有 SHA-1SHA-256 并重新插入它们并且它起作用了。是的,请确保您使用的是最新的 google-services.json 文件。尝试更新它。注意:请在重新插入 SHA-1SHA-256 条目后更新 google-services.json 文件。
    • @RumitPatel 非常感谢。我想我真的搞砸了 google-services.json。我完全按照你告诉我的做了,现在它可以工作了。
    • 谢谢。该解决方案得到了很好的解释并且确实有效!
    • 在真实设备上使用调试模式,我尝试了答案中的所有步骤(从播放控制台添加指纹并调试),但我仍然收到错误:错误:[auth/app-not-authorized] 这个应用程序不是授权使用 Firebase 身份验证。请确认在 Firebase 控制台中配置了正确的包名称和 SHA-1。 [ 通过了一个安全网令牌,但在 Firebase 控制台中没有注册匹配的 SHA-256。请确保此应用程序的 packageName/SHA256 对已在 Firebase 控制台中注册。 ]
    • @RabbiShukiGur,对于调试构建,您不需要遵循所有这些步骤。您只需要从 Android Studio 获取 SHA1 指纹。


    当您更新 Android Studio 时,用于签署调试应用程序的调试密钥可能已更改。只需在 firebase 控制台中添加调试密钥的新 SHA-1 校验和即可。

    最简单的方法是从

    连接/同步到 firebase

    Tools>Firebase>Authentication>Connect>Sync

    如果您想手动执行或发布密钥库,请首先使用以下命令生成 SHA-1 校验和:

    1
    keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

    然后复制 SHA-1 校验和并转到:

    Firebase Console > Your project > Settings of the app > Add Fingerprint

    有关更多信息,请阅读本指南:验证您的客户 |适用于 Android 的 Google API

    • 但是这个错误是针对已签名的 apk 的。我也实施了 firebase 和 ON 身份验证。它适用于 debug.keystore,但不适用于从我的 keyStore 生成的 SHA。奇怪的。还有其他有这个问题吗?
    • 我已经这样做了。但我发现了完全奇怪的解决方案。我稍后会在这里发布。
    • 你能把它贴在@RumitPatel 上吗?遇到同样的问题。
    • @gowithefloww ,是的,请稍候。明天可能会发布。
    • @gowithefloww,请检查答案,下次可能会对您有所帮助。 :-)
    • 我也无法与项目同步
    • 我们正在使用颤振,所以我们得到了以下错误,有什么建议吗?找不到 Android 应用程序模块。只有 Android 应用程序模块可以连接到 Firebase 在线项目。创建新的 Android 应用程序模块或创建/导入不同的 Android Studio 项目


    如果您使用模拟器进行电话 OTP 验证,则它不会工作,因为它没有 sim。因此,请尝试将其安装到您的手机(使用 sim 卡)并检查错误是否仍然存在。

    • 你是怎么想出这个的?
    • 我已经在模拟器上试过了,但它不起作用。然后我认为问题出在虚拟手机上,所以将它安装在它工作的真实手机上。


    如果是 Linux 机器

    第 1 步:转到文件系统中项目的物理文件目录

    第 2 步:转到您的项目> android>

    第三步:点击右键,在这个目录下打开一个新的终端

    第 4 步:运行命令 'gradlew signingReport'

    第 5 步:复制您的 SHA-1 密钥或 SHA-56 密钥

    第 6 步:转到 Firebase 控制台>您的项目>项目设置>添加指纹

    第 7 步:粘贴您的 SHA-1 密钥或 SHA-56 密钥并保存。

    现在,你可以走了。

    谢谢。

    • 101%解决问题
    • 如果你在 android 目录中,它只是 gradlew signingReport 而不是 ./gradlew signingReport


    好的,我刚刚发现了问题..
    如果您使用的是 Play 商店应用签名,那么您分发的应用的 SHA1 将与您在本地使用的不同。确保将 SHA1 密钥从 Play 控制台添加到 Firebase 控制台中的应用。

    • 另外,需要重新下载 google-services.json 文件,并在提交到应用商店后添加到应用中。然后重新上传到google play store。
    • 你是什??么意思"重新上传到谷歌游戏商店?"上传什么?
    • @PeteAlvin 我猜他的意思是在从 Play 商店应用签名添加 SHA1 后下载 google-services.json 文件


    如果您使用的是 Google 内部应用共享,请注意,Google 会自动使用与此处所述完全不同的证书对您的构建进行签名,您需要找到由 Google 自动为您的应用构建提供的签名证书信息。

    查找证书;

  • 登录您的 Play 管理中心。
  • 选择您的应用。
  • 在左侧菜单中,选择开发工具 > 内部应用共享。
  • 选择"应用程序证书"选项卡,然后将 SHA-1 复制到您的 Firebase 控制台。
    • 在我偶然发现您的答案之前,花了几天时间在 GCP 周围翻找。我所要做的就是向下滚动叹息。谢谢@Roach
    • 很高兴我能帮助@NathanyAttipoe


    n

    • 确切的解决方案,我遇到了同样的问题,使用 SHA256 解决了 firebase。


    这花了我两天时间。我尝试了接受的解决方案(由 Nabin Bhandari 提供),但这对我不起作用。然后终于设法做到了如下。

  • 转到"构建> 生成签名包/APK"。

  • 如果您想将应用上传到 Play Store,请选择"Android App Bundle",否则您可以使用"APK"。然后下一步。

  • 现在在"密钥存储路径"中单击"新建"。在对话框中输入详细信息。当您单击"确定"时,您将生成密钥文件。

  • 输入密钥路径、密码等

  • 根据需要选择"调试"或"发布"。在此之后,您的签名 apk 会在 [project Directory]\\\\app\\\\debug.

    中生成

  • 现在使用(由 Nabin 建议)生成 SHA-1 密钥:

    keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

  • 使用 adb install app-debug.apk 在设备中安装应用程序。现在该应用程序可以运行了。

  • 开发/调试提示:使用 Run 时安装签名的 APK。
    当您再次单击运行时,已签名的应用程序将被覆盖,您可能会再次遇到问题。所以当点击运行'app'时需要安装签名的apk。

    将这些值添加到您的 .gradle 文件 (Module:app):

    1
    2
    3
    4
    5
    6
    7
    8
    signingConfigs{
        debug{
            keyAlias 'your key alias'
            keyPassword 'your keypassword'
            storeFile file('keystore path')
            storePassword 'your storepassword'
        }
    }

    参考:看这里


    n


    n

    • 您如何访问 Google Play 控制台中的 SHA-1?
    • nvm - 这是 Google Play 控制台 -> 选择应用程序 -> 设置 -> 应用程序完整性 -> 应用程序签名密钥证书 -> SHA-1


    在 Firebase 中更新您的应用指纹,它对我有用。

    第 1 步:
    通过在终端中运行此命令获取最新的 SHA-1
    对于 Linux 或 macOS:

    1
    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

    对于 Windows:

    1
    keytool -list -v -keystore"%USERPROFILE%\\.android\\debug.keystore" -alias androiddebugkey -storepass android -keypass android

    第 2 步:
    转到 Firebase 控制台并删除最近添加的指纹

    Firebase 控制台 > 您的项目 > 项目设置 > 删除指纹

    下一步:
    Firebase 控制台 > 您的项目 > 项目设置 > 添加指纹
    粘贴新的 SHA-1 指纹并保存。它现在可以正常工作了。


    我也遇到了同样的问题,解决方法如下

    像本文档一样生成 .keystore 文件
    https://facebook.github.io/react-native/docs/signed-apk-android

    通过此命令生成 SHA-1 密钥

    1
    keytool -list -v –keystore [PATH]\\android\\app\\my-upload-key.keystore

    并复制证书指纹下的 SHA1 密钥并将其添加到 firebase 应用程序设置->常规选项卡->您的应用程序部分->SHA 证书指纹


    我发布晚了,但这是我发现的一个非常简单的技巧 下载此密钥资源管理器
    并探索您的应用签名密钥(.jks),您将能够获得 SHA-1


    n


    n


    n


    n


    n


    n


    看看这个线程:
    调试模式下如何在 Android Studio 中获取 SHA-1 指纹证书?

    现在您将如何轻松获取应用程序的 SHA-1 键(无需 -keytool 命令)并将 id 添加到 Firebase 控制台。然后您必须更新项目中的 google-services.json 文件。

    有关关于java:此应用无权使用Firebase身份验证。请验证在Firebase控制台中配置了正确的包名和SHA-1的更多相关文章

    1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

      我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

    2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

      我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

    3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

      类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

    4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

      很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

    5. ruby - 在 Ruby 中使用匿名模块 - 2

      假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

    6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

      我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

    7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

      关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

    8. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

      给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

    9. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

      我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

    10. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

      我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

    随机推荐