无效的密钥哈希。密钥哈希与任何存储的密钥哈希facebook android都不匹配

时间:2014-10-19 09:49:40

标签: android facebook debugging hash release

我正在开发一个使用Facebook身份验证的Android应用程序。在调试模式下,我使用代码生成的调试密钥哈希:

try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.org.package", 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("MY KEY HASH:", sign);

            }
        } catch (NameNotFoundException e) {
        } catch (NoSuchAlgorithmException e) {
        }

现在我想在Google Play商店中发布我的应用,所以我需要生成一个发布密钥哈希。我使用facebook开发者文档中提到的方法:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

对于RELEASE_KEY_PATH,它是将项目导出到apk时生成的kaystore的路径。

我添加了生成给facebook应用程序的hey哈希,但我仍然有错误:

无效的密钥哈希。密钥哈希与任何存储的密钥哈希facebook android都不匹配。

当我添加由java代码生成的hey哈希时,它可以工作,但我不能为每个设备执行此操作,我需要发布我的应用程序,以便每个人都可以使用它。

解决方案是什么?请帮我。

1 个答案:

答案 0 :(得分:1)

我已经解决了我的问题:D

因此要获得发布密钥哈希,您需要在Android模拟器中安装apk文件,并将以下代码生成的密钥添加到您的Facebook应用程序中:

try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.org.package", 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("MY KEY HASH:", sign);

            }
        } catch (NameNotFoundException e) {
        } catch (NoSuchAlgorithmException e) {
        }
祝你好运!!