0

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

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

然后,我在 GCP 凭据页面上将我的 SHA-1 密钥添加到我的安卓 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. 我做错什么了吗?app-check sha-256 有效,为什么 sha-1 密钥无效?
  2. 在 Firebase SDK 设置和配置中添加 SHA-1 密钥与在 GCP 控制台上添加凭据部分有什么区别
  3. 如果使用应用程序检查,是否对实际需要的密钥应用限制?
4

1 回答 1

1

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

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

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

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

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

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

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

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

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

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

于 2021-06-14T19:34:07.943 回答