Facebook KeyHash生成方法

2019-05-30  本文已影响0人  所幸时光未苍凉

准备工作

1.去https://code.google.com/p/openssl-for-windows/downloads/list下载OpenSSL工具
2.在C盘根目录下新建一个openssl的文件夹,并将OpenSSL压缩包解压到此文件夹中
3.找到debug.keystore文件复制粘贴到Java JDK的bin目录下(C:\Program Files\Java\jdk1.8.0_211\bin)
4.找到自己的签名文件(debug.keystore),将其复制粘贴到Java JDK的bin目录下(C:\Program Files\Java\jdk1.8.0_211\bin)

准备工作完毕后

  1. 打开CMD ,路径设置到JavaJDK 的bin路径下,执行以下代码:
keytool -exportcert -alias debug -keystore debug.keystore > c:\openssl\bin\debug.txt

密码是:android (执行完后在 C盘的openssl文件夹下生成了debug.txt文件)

2.打开CMD,路径设置到openssl文件夹下的bin目录(C:\openssl\bin)执行以下代码:

openssl sha1 -binary debug.txt >debug_sha.txt
  1. 继续执行以下代码:
openssl base64 -in debug_sha.txt >debug_base64.txt

执行完后在C盘的openssl文件夹下生成了debug_base64.txt文件

4.打开debug_base64.txt即可得到KeyHash

附:另外一种更直接简单的方法
将key拷贝到jdk的bin目录下,然后打开CMD ,路径设置到JavaJDK的bin目录下,然后执行以下命令:
//得到hashkey
keytool -exportcert -alias debug -keystore debug.keystore | openssl sha1 -binary | openssl base64
//得到 MD5、SHA1、SHA256
keytool -list -v -keystore debug.jks

通过代码来获取​:

 try {
            PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.d("KeyHash:", "KeyHash:" + KeyHash);//两次获取的不一样  此处取第一个的值
                //           Toast.makeText(this, "FaceBook HashKey:"+KeyHash, Toast.LENGTH_SHORT).show();
            }
        } catch (PackageManager.NameNotFoundException e) {
        } catch (NoSuchAlgorithmException e) {
        }

注:此方法要用签名的包,如果未签名会返回一个假的keyHash

上一篇下一篇

猜你喜欢

热点阅读