Java 与Firebase安装服务器API通信时出现Android错误

Java 与Firebase安装服务器API通信时出现Android错误,java,android,firebase,Java,Android,Firebase,我在应用程序启动时收到一条错误消息,说明日志如下 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.",

我在应用程序启动时收到一条错误消息,说明日志如下

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)

我试过了


提前感谢。

我在初始化新应用程序时遇到此错误,因此它可能无法解决您的问题,因为您说您的应用程序已存在,但我希望它能有所帮助

我已为创建了新的SHA密钥(用于调试和签名!仅签名无效)


我已经将它们添加到我的firebase设置中(在我的包名下面,如果有多个,请小心)。现在我可以使用了。

如果您的API密钥有问题,您可以在云控制台中创建一个新的API密钥:

  • 去医院
  • 选择相关项目(即您用于应用程序的项目)
  • 打开菜单,进入
    api和服务
    → <代码>凭证
  • 在页面顶部,单击
    +创建凭证
    → <代码>API密钥
  • 用新创建的API密钥替换应用程序中的API密钥

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

    • 在您的
      googleservices.json
      config文件中标识API密钥
    • 通过对照检查API密钥的使用情况,确认该API密钥正在创建错误请求。API密钥的
      使用此服务
      列应显示大于0的数字
    • 通过单击bin符号删除该API键,或通过单击铅笔符号向该API键添加
      应用程序限制
      !!警告不要删除应用程序的现有安装对其他Firebase服务(如Firebase Auth或Realtime Database)所需的API密钥
    等待几分钟,让谷歌服务器更新。下一次下载的
    googleservice.json
    config文件应该包含一个新的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_key=;
    项目_标识符=;
    app_id=;
    curl-H“内容类型:application/json”-d“{appId:'$app_id',sdkVersion:'t:1'}”https://firebaseinstallations.googleapis.com/v1/projects/$project\u identifier/installations/?key=$api\u key;
    

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


    事实证明,问题出在firebase messaging for me的版本上,在应用程序中使用此版本,gradle消除了错误:

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

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

    我遇到了相同的问题,请单击提供的链接:

    "links": [
              {
                "description": "Google developers console",
                "url": "https://console.developers.google.com"
              }
    
    从那里开始,进入“凭证”菜单

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

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


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

    我也有同样的问题。我用下面的方法解决了它

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

    在这里您可以找到旧的API密钥

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


    干杯

    我也有同样的问题。请查找我为解决此问题而遵循的以下步骤

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

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

    我尝试了这里的每一件事,最后我通过确保以下步骤使它起作用

    规则:应用程序的SHA-1应该使用API密钥在Google开发者控制台中注册

  • 查找您正在使用的SHA-1(调试或发布)。您可以通过进入android studio>渐变表单侧栏>任务>android>签名报告来完成。双击它运行。一旦它运行,您将能够找到您的变体的SHA-1。(在我的例子中,我试着让它在版本变体中运行)。把SHA-1放在一边,我们将在谷歌开发者控制台上检查它是否存在

  • 现在,在您选择的project>Credentials中,查找使用的API密钥,单击它以进入详细信息,查找
    将使用限制到您的Android应用
    ,查看SHA-1是否与您的软件包名称一起注册

  • 如果您在项目中找不到与您相同的SHA-1,那么您可以单击
    添加项目
    添加应用程序。传递包名和SHA-1并提交

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


    要修复此错误,请使用CMD或Windows读取此文件