我正在开发一个Android应用程序,我想在其中集成一个Facebook 发布功能。我下载了Facebook-Android SDK,然后 readme。Md(文本文件)在那里,其中提到要生成 Android的键散列。我如何生成它?


当前回答

使用它在kotlin中打印键哈希

try {
        val info = context.getPackageManager().getPackageInfo(context.packageName,
                PackageManager.GET_SIGNATURES);
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
        }
    }catch (e:Exception){

    }

其他回答

有两种方法可供选择,一种是复杂的,一种是简单的

方法一:(小复杂)

首先,你必须下载相应的64位或32位ssl,记住下载版本号openssl-0.9.8e_X64.zip或openssl-0.9.8e_WIN32.zip后面有e的文件,而不是版本号后面有k的文件,

并放置在AndroidStudio/jre/bin目录下,如果你不知道放在哪里,你可以通过右键单击android studio快捷方式找到这个目录:

现在您已经在一个地方管理了两个必需的东西,但是仍然需要找到调试的路径。在“C:\Users\yourusernamehere\.android\debug.keystore”中可以找到。

如果您的应用程序已经发布或即将发布,那么当且仅当您正在测试时,请使用您的发布签名密钥库 在开发模式下可以使用调试、按键

一切都设置好后,让我们以base64格式安排您想要执行的用于生成哈希键的命令,您的命令将如下所示

keytool.exe -exportcert -alias androiddebugkey -keystore "C:\Users\ayyaz talat\.android\debug.keystore" | "D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" sha1 -binary |"D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" base64

它将提示您为调试输入密码。密钥存储库,默认为android。如果您使用自己的密钥,那么密码也将是您的。 如果一切顺利,输出将如下所示,希望对您有所帮助

第二种方法(分别为简单方法)

如果你不想经历以上所有的过程,那么只需使用下面的方法来记录haskey:

 private void printKeyHash() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA1");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("KeyHash:", e.toString());
        } catch (NoSuchAlgorithmException e) {
            Log.e("KeyHash:", e.toString());
        }
    }

输出:

在Android Studio中,只需点击右侧侧边栏面板“Gradle”即可显示gardel面板: -YOURAPPNAME ——任务 ——安卓 ----(双击)signingReport(启动Gradle Daemon)

然后你会看到结果:

Config: debug
Store: C:\Users\username\.android\debug.keystore
Alias: AndroidDebugKey
MD5: C8:46:01:EA:36:02:D1:21:1B:23:19:91:D4:32:CB:AC
SHA1: 38:AB:4C:01:01:D7:62:E0:61:D1:9F:52:04:0C:E5:07:4E:E4:9B:39
SHA-256: 1B:8C:DC:35:48:10:01:2C:1F:BD:01:64:F1:01:06:01:60:01:A6:8B:10:15:2E:BF:7B:C4:FD:38:4C:C1:74:01
Valid until: Saturday, February 12, 2050

SHA1副本:

38:AB:4C:01:01:D7:62:E0:68:D1:9F:52:04:0C:E5:07:4E:E4:9B:39

进入本页

粘贴SHA1并生成您的Facebook密钥哈希代码。

下载openSSL ->安装它->通常会安装在C:\ openSSL

然后打开CMD并键入

cd../../Program Files (Enter)

java (Enter)

dir (Enter)

cd jdk1.6.0_17 (varies with jdk versions) (Enter)

查看jdk版本到C:/program files/java/jdk_version

cd bin (enter)

keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binary | "C:\OpenSSL\bin\openssl base64 (Enter)

它会问你密码是android。

目前Facebook Android教程中的说明在Windows下并不适用。他们的例子展示了如何将keytool输出输出到openssl,但是如果你在Windows下尝试这样做,由于某些原因输出是无效的。我发现我必须使用中间文件才能让它正常工作。以下是对我有用的步骤:

首先从谷歌下载openssl for Windows。

C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin

C:\Users\Me>openssl sha1 -binary mycert.bin > sha1.bin

C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt

运行这些命令后,有效的散列存储在文件base64.txt中。复制粘贴到你的Facebook应用设置中。

This required no coding input. Go to Android Studio-> 
Click on Right side panel "Gradle"=>
*Your App Name =>
*Your App Name(root)=>
*Tasks=>
*android =>
*Double click on **signinReport**=>
Will get 
example :
SHA1: [![6A:DE:ED:5A:9F:0B:19:47:38:DC:DE:3B:7B:A2:D7:4C:6C:0A:24:70][1]][1]

Go to 

http://fbkeyhash.com/index.php
Paste your SHA-1