FaceBook 生成密钥散列问题

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

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

猜你喜欢

转载自blog.csdn.net/chenluming210/article/details/130618449