FaceBook 生成密钥散列问题

当在Android项目中接入Facebook并遇到InvalidKeyHash错误时,可以检查build.gradle配置,通过代码打印和命令行生成的密钥散列对比。如果两者不一致,可能需要使用不同的OpenSSL版本重新生成密钥散列。确保使用的密钥与Facebook应用设置中的匹配,以解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" base64

在接入项目中,通过Facebook 提供的命令,生成密钥散列发布之后,运行程序,却一直报错(Invalid key hash.

但是无论是检查配置 或者 签名文件,都没有问题。那么提供如下解决方案,希望能帮助大家。

1.检查build.gradle 是否正确配置

2.  使用代码打印一个hashKey

private void getHashValue(){
    try {
        PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature s:
             packageInfo.signatures) {
            MessageDigest instance = MessageDigest.getInstance("SHA-1");
            instance.update(s.toByteArray());
            Log.e("clm","KeyHASH=="+ Base64.encodeToString(instance.digest(),Base64.DEFAULT));
        }

    } catch (PackageManager.NameNotFoundException e) {
        throw new RuntimeException(e);
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException(e);
    }
}

3.若代码打印出来的密钥和命令生成的密钥不一致,则换一个openssl 重新生成密钥(Facebook 有提供下载的链接)

至此,就基本解决了。如果有大佬知道为什么两个生成的密钥不一样,还望告知下。。。 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值