对 facebook android sdk 中的 keyhash 感到困惑

Confused about the keyhash that in facebook android sdk

我正在为 android 使用 facebook sdk,我几乎阅读了我找到的所有关于它的文档,但让我感到困惑的是 keyHash,我听说它是​​为了安全而设计的,并且在此 slidenerd tutorial Vivek 先生说它应该是秘密的,但他没有删除生成它的代码,任何拥有相同代码的人都可以生成相同的散列,因为它不是加盐散列。 我对此有点困惑,所以请告诉我我缺少什么。提前致谢。

tl;dr:密钥散列不需要是秘密。它本质上是一个允许 Facebook 验证您的应用程序的签名。

长版:

当您创建 apk 时,您使用密钥库中的密钥对其进行签名(针对开发构建进行调试,针对生产构建进行发布)。

密钥哈希是您密钥的 sha1 哈希,当您将其放入应用设置时,Facebook 会将此值与您的应用相关联。

当您的应用程序开始使用 Facebook 应用程序中的任何 SDK 功能(SSO、共享对话框等)时,Facebook 应用程序能够从您的应用程序中提取签名,生成密钥哈希,并将其发送到服务器。服务器将验证发送的值是否与您的应用相关联。这样,如果有人试图欺骗您的应用程序,它将在服务器端失败,因为密钥散列会不同(只要他们无权访问您的签名密钥)。