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 有提供下载的链接)


至此,就基本解决了。如果有大佬知道为什么两个生成的密钥不一样,还望告知下。。。
当在Android项目中接入Facebook并遇到InvalidKeyHash错误时,可以检查build.gradle配置,通过代码打印和命令行生成的密钥散列对比。如果两者不一致,可能需要使用不同的OpenSSL版本重新生成密钥散列。确保使用的密钥与Facebook应用设置中的匹配,以解决此问题。
1273

被折叠的 条评论
为什么被折叠?



