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 有提供下载的链接)
至此,就基本解决了。如果有大佬知道为什么两个生成的密钥不一样,还望告知下。。。