Android的Facebook哈希密钥的签名APK有时会更改



我正在使用Facebook登录集成到我的应用程序中。我为已签名的APK配置了哈希密钥Facebook并成功运行。但有时,当我发布一个新的APK文件时,哈希密钥不再有效("无效密钥哈希FacebookAndroid与任何存储的都不匹配")。

我阅读了下面的链接,发现"此外,根据电脑的不同,有时密钥可能会更改,如果是这样,哈希也会更改,你只需要适应它"安卓哈希密钥

你能帮我解释一下吗?签名APK的哈希密钥Facebook有时会更改吗?应用程序何时上传到play商店怎么样?

非常感谢。

切换电脑时,调试密钥哈希会发生变化,因为每台电脑都有不同的Debug.keystore文件。当您使用release.keystore文件获取release-keyhash时,即使您切换PC,它也不会更改。在这种情况下,您使用的是相同的release.kkeystore文件。

您需要在facebook上注册开发人员哈希密钥(与您的计算机相关)和生产哈希密钥(与其签名版本相关)。为了确保你有正确的密钥,在你的代码中运行这个并复制输出:

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "Your package name", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            System.out.println(Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {
    } catch (NoSuchAlgorithmException e) {
    }

无论何时您的应用程序正在开发中,调试哈希密钥都用于facebook集成。调试哈希密钥是特定于机器的(即您正在使用的PC)

而发布散列密钥与调试密钥不同(它不会改变)。当你生成一个签名的apk进行上传时,必须更新一个发布哈希密钥,以便与你的应用程序进行Facebook集成。

阅读此以更好地理解如何为facebook创建发布哈希密钥

您可以使用以下代码检查您的密钥哈希:

    // Add code to print out the key hash
    try {
        String PACKAGE_NAME=getApplicationContext().getPackageName();;
        PackageInfo info = getPackageManager().getPackageInfo(
                PACKAGE_NAME, 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {
    } catch (NoSuchAlgorithmException e) {
    }       

最新更新