Firebase API 密钥限制

问题描述

我正在努力正确设置我的 SHA-1 密钥并限制 android 上的 api 密钥。

我已按照步骤使用 SHA-256 密钥设置应用检查,效果很好。

然后我在 GCP 凭据页面上将我的 SHA-1 密钥添加到我的 andriod api 密钥并添加了相关限制。我还将它添加到 Firebase 控制台上的 SDK 设置和配置中。

如果我添加了 api 限制,它就可以工作。我添加应用程序限制(使用我的包名称和 SHA-1 密钥)的那一刻,尽管用户登录(同样没有应用程序限制,这也能正常工作),它仍会引发以下错误

User is not authenticated,please authenticate using Firebase Authentication and try again.

我使用以下链接中的步骤生成了我的密钥:Generate SHA-1 for Flutter/React-Native/Android-Native app

  1. 我做错了什么吗?应用检查 sha-256 有效,那么为什么 sha-1 键无效?
  2. 在 Firebase SDK 设置和配置上添加 SHA-1 密钥与 GCP 控制台上的凭据部分有什么区别
  3. 如果使用应用检查,是否对实际需要的密钥应用限制?

解决方法

应用有两种模式:调试模式和生产模式。

通常,我们在模拟器上或手机中测试的应用程序都会被调试,因此我们需要 SHA-1 进行调试模式。如果您使用 Generated Signed Apk,那么我们需要 SHA-1 用于生产模式。

当我们使用 firebase 时,您必须将 SHA-1 和 SHA-256 添加到 firebase 设置页面。然后 firebase 会自动调整 GCP 中的设置。

您可以手动创建凭据或 firebase 为您创建凭据。我更喜欢firebase方式。所以没有区别。

那么为什么我们需要 SHA-1 或 SHA-256 或限制?

假设有人从您的计算机复制您的 API 密钥并将其添加到他们的应用程序中。现在,使用这些服务的费用将添加到您的帐单中。它已经发生在很多人身上。只是隐藏 API 密钥可能很危险。

另一个例子,假设您是公司的所有者。您雇用某人并为他们提供用于测试或开发目的的 API 密钥。现在,如果开发人员将 1 天的 API 密钥(他可以赚约 1000 美元)卖给一家中型公司。然后费用将添加到您的帐单中。

所以我们需要一些服务器内部的锁,所以我们要做的是 android studio 创建一个项目并拥有一个唯一的 SHA 凭证。然后这些由服务器检查,如果它们匹配,则允许它们使用 API。因此,为了您的安全,您可以添加限制。由于同样的错误,我从 Amazon AWS 收到了 54000 INR 的账单。但他们调整了,因为我通过邮件要求他们。

此外,您可以取消所有限制,这样就不会出现身份验证错误(100% 确定)。

API 密钥示例 - 12kmcasdi23n2jn3r2j423jn1o23mk3-934nof 示例成本 - 10 美元/1000 次请求

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...