Firebase身份验证 - 已过期的API密钥

12
我正在开发一个无服务器客户端应用程序,该应用程序使用Firebase身份验证和Google的其他服务。一切工作正常,但突然间FB登录身份验证停止了工作。当我尝试登录用户时,出现400 BADREQUEST错误,并显示以下内容:
{
    "error": {
        "code": 400,
        "message": "API key expired. Please renew the API key.",
        "errors": [{
            "message": "API key expired. Please renew the API key.",
            "domain": "global",
            "reason": "badRequest"
        }],
        "status": "INVALID_ARGUMENT"
    }
}

引起问题的URL是:

https://www.googleapis.com/identitytoolkit/v3/relyingparty/getProjectConfig?key=AIzaSyDXJ1Lwo_Md0xZzFfPX9Y8dQWOaODE4uiM&cb=1534851951010

一些奇怪的事情:

  • 我使用完全不同的项目进行测试(因此是全新的密钥):仍然失败
  • 如果我进入云控制台,我会发现 Google 自动创建了几个 未受限制的 密钥(我附上了一个截图)

enter image description here

我还创建了一个全新的应用程序并在本地执行它。 结果相同。

有什么想法吗?

添加:我刚刚发现身份验证 API 目前实际上让我100% 失败。

enter image description here


尝试创建一个新的浏览器API密钥。 - bojeil
显然出现了一个关键错误;支持团队已经修复了它,但我升级了它,因为我没有理解问题所在。我会在有新信息时尽快更新答案。 - Bruno Ripa
1
我也突然遇到了这个问题... 有什么消息吗? - arao6
最终更新。根据客户支持,一个密钥已被有效删除。现在,我不记得这样的操作,而且我认为在执行此操作时必须清楚地知道正在发生什么。无论如何,为了记录,如果您可能遇到与我相同的问题,请记得检查密钥。 - Bruno Ripa
@BrunoRipa,那你的解决方案是什么?我也遇到了同样的问题,但不知道该如何解决。 - vir us
显示剩余6条评论
10个回答

19

我也遇到了这个问题,这个方法帮助我解决了:

  1. 前往Google API控制台并找到密钥:Android密钥(由Google服务自动创建)。这些密钥是Firebase在您选择身份验证选项“电子邮件/密码”时自动生成的。复制该密钥。

  2. 在您的Android Studio中的项目部分中前往google-services.json文件。点击该文件并查找api_key->current_key。将该值修改为步骤1中的API密钥。


4
我也做了同样的事情,但没有成功。然后我在Android Studio上运行了“清理项目”,结果成功了!终于解决了问题。感谢提供的解决方案! - Nick
在编译apk之前,使用“清理项目”是关键所在,谢谢。 - GPack

3
我曾经遇到过同样的问题,我通过以下步骤解决了它: 重置我的项目,包括... 删除 Google-Services.json 文件,替换 SHA1 密钥,同步并添加新的 Google-Services.json 文件到我的项目中。希望这能帮到你。
祝好!

2

我通过进入 firebase 项目设置 > 通用 > 更新旧 API 密钥为 Web API 密钥的值来解决了问题。


你不需要点击更新,它很可能已经不同了。 - Charles Harring

1

首先,前往https://console.firebase.google.com/

  1. 然后选择Android项目

  2. 接着进入该项目的设置

  3. 首先,检查debug apk(必需)和release apk(如果您创建了已签名的apk,则必需)中是否存在sha1和sha256指纹

  4. 在那里,您会看到一个下载JSON文件的按钮,请单击它并下载该文件。

  5. 然后打开Android Studio并打开您的项目。

  6. 然后在左侧菜单中,点击项目子文件,然后找到googleservices.json文件。

  7. 双击该文件以打开它

  8. 现在打开已下载的文件googleservices.json,并在记事本中打开它。

  9. 现在复制所有内容,只需全选并复制。

  10. 现在转到Android Studio,在Google服务文件上右键单击(在IntelliJ中),然后单击与剪贴板比较,并仔细接受所有差异到Android Studio文件中。

  11. 或者您可以直接删除所有内容并将复制的内容粘贴到Android Studio JSON文件中。

完成! 注意:在进行此操作之前,请确保复制该文件。


我已经按照要求做了,但仍然无法正常工作。 - Abhinav Saxena
也许在您的情况下问题是不同的。 - Vijay
我已经按照您的步骤进行了检查,并仍在检查中。如果它不起作用,我会告诉您或者寻求您的进一步帮助。顺便说一下,这只是在这个项目中。 - Abhinav Saxena
1
你是对的Vijay,我的gradle脚本有问题。我的buildTypes部分在signingConfigs部分内。Gradle没有报错,也没有应用程序签名。 - Abhinav Saxena

0

AngularFire, Ionic, Angular

我从Google云控制台浏览器密钥(由Firebase自动创建)中获取了新的API密钥,并进行了替换:

environment.prod.ts

 firebaseConfig: {
          apiKey: 'here'
    }

还有 D:\me\my-mobile\android\app\google-services.json

 "api_key": [
        {
          "current_key": "here"
        }

现在它运行得很好。


0

打开 Firebase 控制台。 进入项目设置 -> 通用选项卡 -> 您的 Web API 密钥将自动更新。然后复制该 API 密钥并将其替换为 environment.ts 文件中的 API 密钥,它就可以工作了。

希望能对您有所帮助!


0
在我的情况下,Android Studio 没有根据更新后的 google-services.json 中的数据正确生成 string.xml,因此当我手动替换旧的 API 密钥时,它最终正常工作了。

0

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

  1. 这是因为 Firebase 中的 Web-API 密钥已过期所致。因此,请打开您的项目控制台。
  2. 进入您的项目设置
  3. 在那里获取 Web-API 密钥
  4. 打开您的 Flutter 项目并移动到 google-services.json 文件
  5. 用新复制的 API 密钥替换当前密钥值。
  6. 或者简单地用同一项目设置中存在的新下载的文件替换旧的 google-services.json 文件。
  7. 在项目终端中运行 flutter clean
  8. 运行 flutter pub-get 获取依赖项
  9. 重新构建您的应用程序,完成。

0

前往您的Google Cloud平台,进入API凭据并将Firebase下载的Google服务JSON与GCP API凭据中的内容进行比较。

有可能您在JSON中使用了错误的ClientID或API密钥。

祝好!


0
Hi All if you are getting this error:

error: Error [firebase_auth/internal-error] {"error":{"code":400,"message":"API key not valid. Please pass a valid API key.","errors":[{"message":"API key not valid. Please pass a valid API key.","domain":"global","reason":"badRequest"}],"status":"INVALID_ARGUMENT","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","reason":"API_KEY_INVALID","domain":"googleapis.com","metadata":{"service":"identitytoolkit.googleapis.com"}}]}}


this means you are trying to run app on web chrome and in your flutter app this is not configure so follow below steps:

 1. Go to https://console.firebase
 2. Select your project name i.e. "E-Commerce App"
 3. Select Add App option from dashboard select platform (flutter/android/ios/web) from this select flutter
 4. Add Firebase to your Flutter app this screen will open then select next
 5. From any directory, run this command:"dart pub global activate flutterfire_cli"
 6. Then, at the root of your Flutter project directory, run this command:"flutterfire configure --project=eshop-a44ca"
 7. After "flutterfire configure" check npm

add this in main.dart file: 
await Firebase.initializeApp(
         options: DefaultFirebaseOptions.currentPlatform,
     );

 8. Run this command in your project directory npm install -g firebase-tools
9.Again run this command ""flutterfire configure --project=eshop-a44ca" you will see below screen [firebase options file created in lib folder]


 9. now you can sign up/register user successfully 
 10. [user created on firestore database ]


  [1]: https://istack.dev59.com/NBiDz.webp

请修复格式。 - ozkanpakdil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接