【问题标题】:android hash key安卓哈希键
【发布时间】:2012-09-05 23:30:26
【问题描述】:

我已经完成了一个使用 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/开发人员的说明的问题。我确定有涵盖此内容的文档,但找不到。

谢谢!

【问题讨论】:

    标签: android facebook


    【解决方案1】:

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

    如您在documentation 中所见,它是用于验证应用程序身份的额外安全层。

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

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

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

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

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

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

    【讨论】:

    • 非常感谢您提供的信息丰富的回答。唯一不符合您所说的(我相信这是真的)的事实是,我已经在 onFacebookError 方法中放入了一个 toast,其中 e.getMsg() 作为要显示的字符串,并且在不同的电话上品牌 我收到一条不同的消息,告诉我我需要在 facebook 上的应用程序设置页面中添加不同的哈希值。这是我用开发 PC 构建的同一个应用程序,但事实上,facebook api 表明设备中的应用程序正在尝试使用不同的哈希值进行操作。怎么样?
    • 添加e.getMsg消息中引用的哈希键(e是onFacebookError的参数)后,应用程序工作。但它不适用于模拟器使用的第一个哈希,我使用 openssh
    • 您需要按照我们文档中的说明输入正确的哈希值,确保命令提示您输入密码,即“android”。如果它不要求一个,那么哈希键是不正确的。此外,根据 PC 的不同,有时密钥可能会发生变化,如果是这样,哈希值也会发生变化,您必须适应这种情况。不过,当您最终使用自己的密钥签署应用程序时,这不是问题。
    • 嗨,我和我的朋友正在开发一个使用 Facebook 登录的应用程序。我们都生成了自己的密钥哈希,并在生成密钥哈希时提供了它。问题是我可以通过 Facebook 登录,但我的朋友不能。可能是什么问题?
    • 嗨@JesseChen,两台不同机器上的调试密钥(由.android文件夹中的sdk生成)的哈希是否可能不同?如果是,如何?为什么?
    【解决方案2】:

    您可以使用一个密钥来注册您的应用程序,并且您必须与您的 Facebook 开发人员资料 see this 关联。为了让您在部署之前在各种设备上测试应用程序,您应该使用Android documentation中解释的android调试密钥

    【讨论】:

    • 我正在使用调试键.. 但是不同手机上是否可能有不同的调试键?当我签署应用程序时,所有设备都将使用相同的密钥?
    • 那么您的签名过程有问题。如果您描述了使用调试密钥对应用程序进行签名的步骤,我们可能会帮助您更正它。
    • 其实我什么都没做。我在文档上读到,如果您不签署应用程序,开发插件会为您签名,因此您可能不知道整个签名过程。我正在使用 Eclipse
    • 我没有收到您的最后评论
    猜你喜欢
    • 2012-01-13
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2014-01-30
    • 2013-11-18
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多