【问题标题】:Android Error when communicating with the Firebase Installations server API与 Firebase 安装服务器 API 通信时出现 Android 错误
【发布时间】:2020-08-10 16:46:12
【问题描述】:

我在应用启动状态日志中收到一条错误消息,例如

W/Firebase-Installations: Error when communicating with the Firebase Installations server API. HTTP response: [400 Bad Request: {
  "error": {
    "code": 400,
    "message": "API key not valid. Please pass a valid API key.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.Help",
        "links": [
          {
            "description": "Google developers console",
            "url": "https://console.developers.google.com"
          }
        ]
      }
    ]
  }
}
]
2020-04-27 12:42:34.621 22226-23596/in.co.androidapp.g7 E/Firebase-Installations: Firebase Installations can not communicate with Firebase server APIs due to invalid configuration. Please update your Firebase initialization process and set valid Firebase options (API key, Project ID, Application ID) when initializing Firebase.

大约一周前我收到一封电子邮件,我应该更新我的 google_services.json 文件,我已经完成了 4-5 次。没有改进。它已经工作了大约一年。距离我在应用程序中遇到此问题仅 2-3 天。

随后,Firebase 云消息传递和其他 Firebase 服务无法正常工作。我不是在做程序初始化(即使用 FirebaseOptions 对象来提供这些值),只是使用FirebaseApp.initializeApp(this);的默认初始化

我试过https://github.com/firebase/firebase-android-sdk/blob/master/firebase-installations/API_KEY_RESTRICTIONS.md

提前致谢。

【问题讨论】:

  • 您的软件包名称在 firebase 控制台中是否正确?
  • @NullByte08 是的,它已经运行了大约一年
  • 要进一步分析此问题,我们需要查看您的 API 密钥。您能否分享 API 密钥并将中间的 10 个字符替换为一些替换字符(例如“X”)而不更改密钥的长度?
  • @AndreasRayoKniep AIzaSyCrf5T0QyCUABJhZTsks7ep%%%%%%%%%%Y
  • @DakshAgrawal:这看起来像是一个有效的 API 密钥,我很困惑如何获得“API 密钥无效”。作为服务器响应。我感觉对服务器的实际请求不使用此 API 密钥 - 要么使用不同的(无效)API 密钥,要么以某种方式无权访问此 API 密钥。

标签: java android firebase


【解决方案1】:

我在初始化新应用时遇到了这个错误,所以它可能无法解决您的问题,因为您说您的应用已经存在,但我希望它会有所帮助。

我为 SHA-1 fingerprint of keystore certificate 创建了新的 SHA 密钥(用于调试和签名!只有签名不起作用)

并且我已将它们添加到我的 firebase 设置中(如果您有多个,请注意在我的包名称下方)。现在它对我有用。

【讨论】:

    【解决方案2】:

    如果您的 API 密钥有问题,您可以在 Cloud Console 中创建新的 API 密钥:

    • 转至Google Cloud Console
    • 选择相关项目(即您用于应用程序的项目)
    • 打开菜单并转到APIs & ServicesCredentials
    • 在页面顶部点击+ CREATE CREDENTIALSAPI key
    • 用新创建的 API 密钥替换应用程序中的 API 密钥

    如果您使用 Firebase Console 中的 google-services.json 配置文件,您首先必须删除或限制当前 google-services.json 中使用的 API 密钥,以便让 Firebase 更新配置文件并使用新的 API键。

    • 在您的 google-services.json 配置文件中识别 API 密钥。
    • 通过对照Firebase Installations API metrics page 检查 API 密钥的使用情况,确认 API 密钥正在创建错误请求。 API 密钥的 Usage with this service 列应显示大于 0 的数字。
    • 单击 bin 符号删除该 API 密钥,或单击铅笔符号将 Application restrictions 添加到该 API 密钥。 !!警告!!请勿删除现有应用程序安装所需的其他 Firebase 服务(例如 Firebase Auth 或 Realtime-Database)的 API 密钥。

    等待几分钟,让 Google 服务器更新。下一次下载的 google-service.json 配置文件应该包含一个新的 API 密钥。

    您可以使用以下 CURL 命令测试您的配置。 您遇到的错误是什么? (注意:如果您看到请求是 JSON 数据并且您的配置成功)


    测试您的配置是否适用于以下 CURL 命令:

    api_key=<YOUR_API_KEY>;
    project_identifier=<YOUR_PROJECT_ID>;
    app_id=<YOUR_FIREBASE_APP_ID_EXAMPLE_1:12345678:android:00000aaaaaaaa>;
    
    curl -H "content-type: application/json" -d "{appId: '$app_id', sdkVersion: 't:1'}" https://firebaseinstallations.googleapis.com/v1/projects/$project_identifier/installations/?key=$api_key;
    

    有关 API 密钥和Firebase Installations API 的其他相关链接:

    【讨论】:

    • 出于某种原因,我不断收到此错误,即使启用了“安装”(通过此处:console.cloud.google.com/apis/library/…),即使我尝试生成新密钥(甚至包括“安装”那里)并将其复制到新的json文件中,我仍然遇到这个问题。怎么会?
    • 您可以使用以下 CURL 命令测试您的配置。你得到的错误是什么? (注意:如果您看到请求是 JSON 数据并且您的配置成功)``` api_key=; project_identifier=; app_id=<12345678:android:00000aaaaaaaa>
    【解决方案3】:

    原来问题出在我的firebase-messaging版本上,在app gradle中使用这个版本摆脱了错误:

    implementation "com.google.firebase:firebase-messaging:20.1.0"
    

    【讨论】:

    • 降级 Firebase SDK 可能会消除错误消息。但是,它并不能解决根本问题。
    • @Tosin 你找到解决办法了吗?
    【解决方案4】:

    如果您在 gradle 中包含一些未正确配置的 firebase 模块(分析、存储、消息传递等),则可能会发生此错误

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,点击提供的链接:

      "links": [
                {
                  "description": "Google developers console",
                  "url": "https://console.developers.google.com"
                }
      

      从那里,转到“凭据”菜单。

      在您的 google-services.json 文件中确认正在使用的 API 密钥。

      返回谷歌门户并在 API 密钥下查找该密钥。 找到后,单击以进行编辑,并在编辑时添加项目的包名称和 SHA-1 证书密钥。

      保存并等待5分钟,错误应该消失了。

      【讨论】:

        【解决方案6】:

        我也有同样的问题。我通过以下方式解决了。

        转到 app/build/generated/res/google-services/debug/values/values.xml

        您可以在此处找到您的旧 API 密钥。

        将 google_api_key 和 google_crash_reporting_api_key 值替换为您可以从 google-services.json 文件中找到的新值。它将在 api-key 数组下。

        干杯!

        【讨论】:

        • 谢谢,有帮助!顺便说一句,您可以简单地删除“google-services”文件夹,它将在构建过程中使用新的正确数据生成。
        • 谢谢。在颤振中,我刚刚删除了构建文件夹并解决了我的问题
        • 谢谢,这对我有用。我刚刚删除了构建文件夹并重新构建然后它工作了。
        【解决方案7】:

        我有同样的问题。请找到我遵循的以下步骤来解决此问题。

        1. 导航到 google 项目并确保您的应用程序 sha1 密钥配置正确。
        2. 从项目中下载 google-services.json 文件,并确保它与 android 项目中存在的文件相同
        3. 清理项目以删除之前生成的所有构建配置。
        4. 构建应用程序

        【讨论】:

          【解决方案8】:

          迟到但可能对其他人有帮助。

          我在这里尝试了一切,最后通过确保以下步骤使其正常工作,

          规则:应用的 SHA-1 应使用所使用的 API 密钥在 Google Developer Console 中注册。

          1. 查找您正在使用的 SHA-1(调试或发布)。你可以通过 android studio > Gradle form side bar > Tasks > android > signingReport 来完成。双击它运行。运行后,您将能够为您的变体找出 SHA-1。 (在我的情况下,我试图让它为发布变体运行)。将 SHA-1 放在一边,我们将在 Google Developers Console 上检查它是否存在。

          2. 现在转到https://console.cloud.google.com/apis/credentials,在您选择的项目>凭据中,找到使用的API密钥,单击它进入详细信息,找到Restrict usage to your Android apps,查看SHA-1是否与您的一起注册在那里包名。

          如果您没有在项目中找到相同的 SHA-1,则可以单击 Add an Item 添加应用程序。传递包名和 SHA-1 并提交。

          5-10 分钟后再次尝试连接 Firebase API。

          【讨论】:

            【解决方案9】:

            要修复此错误,请使用 CMD 或 Windows 资源管理器读取此文件

            PSC:\Users\Any&gt; keytool -keystore C:\Users\Any\.android\debug.keystore -list -v

            输入密钥库密码:

            使用来自https://keystore-explorer.org/downloads.html的“KeyStore Explorer”

            & 粘贴到这里: https://console.developers.google.com/apis/credentials/key/

            【讨论】:

              【解决方案10】:

              只需再次在Firebase 控制台中注册您的应用即可。 并获取googl-service.json 文件并将其替换为旧文件。会解决的

              【讨论】:

                【解决方案11】:

                如果您在 Flutter 应用程序中遇到此问题,请转到您的项目目录并删除构建文件夹。希望它会起作用。

                【讨论】:

                  【解决方案12】:

                  以下是我的应用程序中该错误消失的原因: 我一次删除了 Project .gradle 文件夹、Project build 文件夹和应用程序 build 文件夹。然后我重新安装了该应用程序,不再出现 Firebase 安装服务器 API 错误!

                  【讨论】:

                    【解决方案13】:

                    我遇到了这个问题,我通过转到 Google 云平台和凭据并使用应用程序限制或 API 限制为您使用的 Firebase 做 API 来解决这个问题。

                    【讨论】:

                      【解决方案14】:

                      如果您在https://console.cloud.google.com 上更改了您的 API 密钥或您已对其进行了限制,您必须按照以下步骤操作:

                      1. 确保您的新密钥位于 google-service.json(从 firebase 控制台下载)。

                      2. 打开 google-service.json,找到 api_keys 并只留下属于每个环境(开发或产品)的 current_key

                      3. 转到 project/app 并删除文件夹 build

                      【讨论】:

                        【解决方案15】:

                        在 Google API 和服务凭证内部 > Android 密钥(由 Firebase 自动创建)> API 限制

                        选择所有服务并保存。 5-10分钟后即可查看。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2014-09-23
                          • 1970-01-01
                          • 2018-12-16
                          • 1970-01-01
                          • 2017-02-02
                          • 2019-10-04
                          • 2019-04-24
                          • 1970-01-01
                          相关资源
                          最近更新 更多