7

我已经完成了开发一个使用 facebook sdk 与 Facebook 集成的 android 应用程序。在这一点上,我对应用程序没有任何问题或问题需要解决,因为它功能强大且运行良好 - 但话虽如此,我相信即使应用程序正在运行,我仍然不完全理解什么是 android 密钥哈希。

1) 我知道 facebook sdk 为开发人员提供了一个唯一的应用程序 ID,以了解他们与谁“交谈”,因此他们也可以控制谁是谁等,但是他们从拥有你的 android 密钥哈希中获得了什么?

2)我知道我在开发PC上的模拟器有一个密钥哈希(我得到了),三星Galaxy S1和S2(都有相同的密钥哈希)有一个不同的,现在我已经通过了apk给另一个具有不同密钥哈希(以及不同的手机品牌和 android 版本)的用户。所以 - 如果有一天我在 Google Play 上发布我的应用程序,我是否需要更新所有可能的哈希键的 facebook/开发人员?

3)哈希键对于模型或平台/android版本是否唯一且恒定,或者我可以从我的应用程序生成一个密钥哈希,这样我就可以添加它并使从不同手机运行的所有相同应用程序使用相同的一个?

4)再次一般 - 我不明白什么是密钥散列,谁生成它,最重要的是为什么 - 密钥散列的用途是什么,它对 facebook 有什么好处?

我试图搜索它,但在这里我发现了关于知道什么是模拟器密钥哈希的步骤或关于如何在 Google 上处理 Facebook/开发人员的方向的问题。我确定有涵盖此内容的文档,但找不到。

谢谢!

4

2 回答 2

19

1) 我知道 facebook sdk 为开发人员提供了一个唯一的应用程序 ID,以了解他们与谁“交谈”,因此他们也可以控制谁是谁等,但是他们从拥有你的 android 密钥哈希中获得了什么?

正如您在文档中看到的那样,它是用于验证应用程序身份的额外安全层。

2)我知道我在开发PC上的模拟器有一个密钥哈希(我得到了),三星Galaxy S1和S2(都有相同的密钥哈希)有一个不同的,现在我已经通过了apk给另一个具有不同密钥哈希(以及不同的手机品牌和 android 版本)的用户。所以 - 如果有一天我在 Google Play 上发布我的应用程序,我是否需要更新所有可能的哈希键的 facebook/开发人员?

密钥哈希基于您用于构建 APK 的计算机,它不依赖于运行它的手机。因此,如果您只在一台开发机器上处理您的应用程序,那么您只需为您的应用程序担心一个密钥哈希。目前,当您仍在开发应用程序时,您正在使用android 调试密钥,当您想发布到 Google Play 时,Google 要求您使用自己的密钥签署 APK,而不是android 调试密钥。当您创建自己的密钥来签署您的 APK 时,您还需要在 Facebook 的应用设置中复制并粘贴您自己的密钥的密钥哈希。

3)哈希键对于模型或平台/android版本是否唯一且恒定,或者我可以从我的应用程序生成一个密钥哈希,这样我就可以添加它并使从不同手机运行的所有相同应用程序使用相同的一个?

就像我上面所说的,密钥哈希与运行它的平台/设备无关,密钥哈希与您构建 APK 的机器相关联。因此,出于测试目的,您找到 android 调试密钥的密钥哈希并将其粘贴到应用程序设置中,所有运行该 APK 构建的手机都将正常工作。简而言之,哈希键 => 开发 PC,而不是哈希键 ==> 手机

4)再次一般 - 我不明白什么是密钥散列,谁生成它,最重要的是为什么 - 密钥散列的用途是什么,它对 facebook 有什么好处?我试图搜索它,但在这里我发现了关于知道什么是模拟器密钥哈希的步骤或关于如何在 Google 上处理 Facebook/开发人员的方向的问题。我确定有涵盖此内容的文档,但找不到。谢谢!

密钥哈希是在编译应用程序时用于签署 APK 的密钥的哈希值。Eclipse 会使用 android 调试密钥自动为您执行此操作,但是当您上传到 Google Play 时,您需要创建自己的密钥。这对您和 Facebook 都有好处,因为它是一个额外的安全层,可确保代表您调用 API 的应用程序实际上是您的应用程序。

于 2012-09-06T18:41:01.227 回答
2

您可以使用一个密钥注册您的应用程序,并且您必须与您的 Facebook 开发人员资料相关联,请参阅此。为了让您在部署之前在各种设备上测试应用程序,您应该使用 Android 调试密钥,如Android 文档中所述

于 2012-09-06T13:22:00.117 回答