Android API密钥/应用程序id和web API的密钥如何相关,它们如何协同工作?

Android API密钥/应用程序id和web API的密钥如何相关,它们如何协同工作?,android,web-services,signing,Android,Web Services,Signing,我找到了很多关于如何找到这些密钥并将它们与我的应用程序集成的教程,但没有人告诉我它们是如何协同工作的。为什么需要它们?在web服务的上下文中,它们解决了什么目的 我们还必须从密钥存储中生成一个散列密钥,并将其注册到不同的web API 我无法理解web API服务如何处理这些密钥,以及它们使用哪些属性来生成这些密钥 正如我所知,我们必须在客户端存储应用程序ID,但出于安全考虑,我们这里不使用密钥,那么密钥在服务器端解决了什么要求 我没有找到任何提供此信息的文档 请提供任何帮助,以便我能够理解这个

我找到了很多关于如何找到这些密钥并将它们与我的应用程序集成的教程,但没有人告诉我它们是如何协同工作的。为什么需要它们?在web服务的上下文中,它们解决了什么目的

我们还必须从密钥存储中生成一个散列密钥,并将其注册到不同的web API

我无法理解web API服务如何处理这些密钥,以及它们使用哪些属性来生成这些密钥

正如我所知,我们必须在客户端存储应用程序ID,但出于安全考虑,我们这里不使用密钥,那么密钥在服务器端解决了什么要求

我没有找到任何提供此信息的文档

请提供任何帮助,以便我能够理解这个概念

我试着阅读下面的文档,但它们没有提供任何关于所有这些是如何结合在一起的信息


这里有很多东西。有些在客户端,有些在服务器端。简单地说,我们可以这样认为

应用程序密钥/id:由服务器用于跟踪特定应用程序在一天内发出的API请求数量,以便在请求计数超过给定阈值时,服务器可以向客户端收费

密钥:此密钥主要用于服务器向另一台服务器发出机密请求(即服务器到服务器的通信)。例如:如果服务器想要或说想要访问服务器上的Facebook客户端,则可以使用此密钥

这就是为什么不允许在客户端存储密钥的原因,因为任何人都可以反编译应用程序,找到此密钥并滥用它。

散列密钥:我们从应用程序证书生成散列密钥,并将其存储在开发人员控制台上,以便为给定散列验证第一个应用程序,并在该API请求提供服务之后进行验证。这就是为什么如果两个散列密钥不匹配,我们有时会在客户端看到无效的散列密钥错误