Google Play Facebook 分享 获取签名的秘钥散列


两种方式:一个通过电脑jdk、openssl获取,一个通过安卓代码获取。


方式一:

转自:http://www.manongjc.com/detail/14-nhmzueqxzzcsumt.html

1.先下载安装OpenSSL工具。

2.将你的 .keystore文件复制到JAVA JDK 文件夹的bin目录里面(C:\Program Files (x86)\Java\jdk1.8.0_144\bin)
win+R打开命令控制器,cd到JANA JDK的bin文件夹下
执行这个命令

keytool -exportcert -alias androiddebugkey -keystore debug.keystore > c:\openssl\bin\debug.txt

其中androiddebugkey是你 .keystore文件的别名,debug是你 .keystore文件的名字。c:\openssl\bin是openssl安装路径。所以命令要这么写(网上好多说debug.keystore找不到的...):

keytool -exportcert -alias 秘钥别名 -keystore 秘钥名字.keystore > c:\openssl\bin\秘钥名字.txt


下方是出现在debug.txt文件里的错误解决方式:
keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect一般情况下是你密码错啦。
keytool 错误: java.lang.Exception: 别名 不存在这种是你别名错啦。

3.然后路径cd到openssl文件夹下的bin目录
执行

opensslsha1 -binarydebug.txt >debug_sha.txt

会生成debug_sha.txt文件
再执行:

openssl base64 -in debug_sha.txt >debug_base64.txt

生成的debug_base64.txt里就是你需要的28位的秘钥散列。

密匙散列 cmd 操作.png

密匙散列结果.png

方式二:

转载自:https://www.jianshu.com/p/cfe54d50e7f2

把下面代码写在要打的包里,运行之后,在log里可以看到key是多少。
或者打个测试包,一定要用正式包的签名打测试包(包名一不一样无所谓),运行,看log有结果。

void getFaceBookKey() {
    try {
        int i = 0;
        PackageInfo info = getPackageManager().getPackageInfo( getPackageName(),  PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            i++;
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            //KeyHash 就是你要的,不用改任何代码  复制粘贴 ;
            Log.e("tyl","KeyHash="+KeyHash);
        }
    }
    catch (PackageManager.NameNotFoundException e) {

    }
    catch (NoSuchAlgorithmException e) {

    }
}

复制之后需要自动引用代码才会消除错误,Androidstudio里alt+enter就自动引用了。

完结。

你可能感兴趣的:(Google Play Facebook 分享 获取签名的秘钥散列)