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

时间:2016-08-01 04:44:20

标签: android facebook

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

我在下面看到这个链接,发现"另外,根据PC,有时密钥可能会改变,如果是这样,哈希会改变,你必须只适应那个" android hash key

你可以请我解释一下这方面的更多细节吗? 用于签名APK的哈希密钥Facebook有时会改变吗?应用程序何时上传到Play商店怎么样?

非常感谢。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

每当您的应用程序处于开发阶段时,调试哈希密钥用于Facebook集成。调试哈希键是特定于机器的(即您正在使用的PC)

与调试密钥相比,发布散列密钥不同(它不会改变)。生成已签名的apk以进行上载时,必须更新版本哈希密钥,以便与您的应用进行Facebook集成。

阅读this以更好地了解如何为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) {

    }       

答案 2 :(得分:0)

您需要在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) {

    }