有关适用于Android的Facebook SDK的开发和发布密钥哈希的问题

时间:2015-12-23 10:37:53

标签: android facebook android-library facebook-sdk-4.0 android-facebook

我阅读了FB Developer网站上的指南。

创建开发密钥哈希

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

并创建一个释放键哈希值

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

我有6个问题:

  1. 这些Key Hashes做了什么?

  2. 为什么需要为ReleaseDevelopment创建不同的键哈希值?

  3. 如果我还没有将我的应用发布到PlayStore。我可以使用Release Key而不是Development key吗?

  4. 如果我的应用在PlayStore中存在,我可以继续使用Development键吗?

  5. 我应该在YOUR_RELEASE_KEY_ALIASYOUR_RELEASE_KEY_PATH中添加什么内容?有人可以提供样品吗?

  6. 为什么我们为iOS开发时,不需要那些关键哈希?

  7. 无关的额外问题

    单点登录按钮有什么作用? enter image description here

4 个答案:

答案 0 :(得分:7)

问:这些Key Hashes做了什么?

  • 他们唯一地标识您的密钥库和应用程序。这是一个独特的 适合您应用的指纹:

签署您的申请

  • Android要求所有应用都使用证书进行数字签名 在他们可以安装之前。 Android使用此证书 识别应用程序的作者,证书不需要 由证书颁发机构签署。 Android应用经常使用 自签名证书。应用程序开发人员持有证书 私钥。

签名概述

  • 您可以在调试或发布模式下对应用进行签名。你签了你的应用程序 准备好时,在开发和发布模式下调试模式 分发您的应用程序。 Android SDK生成证书 在调试模式下签署应用程序要在发布模式下签署应用,您需要 生成自己的证书。您可以进一步参考 看看
  • 的关键词

http://developer.android.com/tools/publishing/app-signing.html

https://developers.facebook.com/docs/facebook-login/android

问:为什么需要为发布和开发创建不同的哈希值?

如你所知,android使用不同的Keystore进行开发和发布,因为两个密钥库在每个方面都不同,它们都有不同的指纹和SHA-1哈希,因此它们被完全区别对待。

问:如果我还没有将我的应用发布到PlayStore。我可以使用Release Key而不是使用Development键吗?

是的,您可以将发布密钥用于APK生成目的但是如果您处于调试模式,则此密钥根本不起作用。

问:如果我的应用程序在PlayStore中存在,我可以继续使用开发密钥吗?

是的,您可以继续使用开发密钥,但不能使用调试密钥。

问:我应该在YOUR_RELEASE_KEY_ALIAS和YOUR_RELEASE_KEY_PATH中添加什么内容?有人可以提供样品吗?

如果您关注Facebook密钥,

附加图像 enter image description here

问:为什么我们为iOS开发时,不需要这些关键哈希?

这是由于平台要求。没有必要,如果一个平台需要一个东西,另一个平台也是如此。

单点登录

单点登录大致是Facebook Connect等服务的扩展(和替代),将您连接到第三方社交应用和服务。如果您已使用手机登录Facebook,则可以使用Facebook凭据登录其他应用。

以下是生成fb指纹的代码。

public void generateFbFingerPrint() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.group3amd.gc.activity",
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String sign = Base64
                    .encodeToString(md.digest(), Base64.DEFAULT);
            Log.e("KEYHASH:", sign);
            Toast.makeText(getApplicationContext(), sign, Toast.LENGTH_LONG)
                    .show();
        }
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }




}

答案 1 :(得分:3)

这些Key Hashes做了什么?

  • Android要求所有应用都必须使用证书进行数字签名才能安装。 Android使用此证书来识别应用程序的作者,并且证书不需要由证书颁发机构签名。因此,这两个键都用于对您的应用进行数字签名。

为什么需要为Release和Development创建不同的键哈希值?

  • 您在开发过程中使用Development key以调试模式对应用进行签名&当您准备在Google Play上发布应用时,会使用release key

如果我还没有将我的应用发布到PlayStore。我可以使用Release Key而不是使用Development键吗?

  • 此时必须使用release key

如果我的应用程序在PlayStore中存在,我可以继续使用开发键吗?

  • Google Play不允许使用调试密钥上传APK,因此您必须使用release key

我应该在YOUR_RELEASE_KEY_ALIAS和YOUR_RELEASE_KEY_PATH中添加什么内容?有人可以提供样品吗?

  • YOUR_RELEASE_KEY_ALIAS:使用您喜欢的任何名称(只记住密钥库的名称)
  • YOUR_RELEASE_KEY_PATH:您要保存密钥库文件的路径(供将来使用)

警告:将密钥库和私钥保存在安全可靠的位置,并确保对其进行安全备份。如果您将应用程序发布到Google Play,然后丢失了用于对应用进行签名的密钥,那么您将无法向应用发布任何更新,因为您必须始终使用相同的密钥对应用的所有版本进行签名。

为什么我们为iOS开发时,不需要这些关键哈希?

  • ios开发人员还要求这些密钥由Apple开发团队生成用于开发和发布的证书。我们必须在开发和发布时使用

以上所有内容都与Android应用有关,而Google play对于FACEBOOK,您必须为开发生成不同的key hash并重新启动

how to generate keyhash for facebook

答案 2 :(得分:2)

这是你的答案。

  1. 开发密钥哈希 - 这仅用于测试,直到您尚未发布Play商店。 释放密钥哈希 - 这是没有此密钥哈希的原始哈希密钥Facebook在Play商店中不起作用。

  2. 如果您创建发布密钥哈希,则不需要创建2 haseh密钥,然后不需要创建开发密钥哈希。

  3. 是没有发布密钥哈希facebook不在Play商店工作。
  4. 开发密钥哈希仅用于测试哈希密钥。
  5. 是的,他们可以做到。

答案 3 :(得分:0)

Facebook使用密钥哈希来验证您的应用与Facebook应用之间的互动。

如果您运行使用Facebook登录的应用,则需要将Android开发密钥哈希添加到您的Facebook开发者个人资料中。 对于您发布给您的应用程序版本,还需要生成并设置Release Key Hash。

在OS X或Windows上,您可以通过生成密钥或使用Settings.getApplicationSignature(Context)返回的值来获取密钥。

如需了解更多信息,请参阅以下链接,

https://developers.facebook.com/docs/android/getting-started