📜  为 Facebook SDK 生成 android 密钥哈希 (1)

📅  最后修改于: 2023-12-03 15:35:57.575000             🧑  作者: Mango

为 Facebook SDK 生成 Android 密钥哈希

当我们在使用 Facebook 登录或分享等功能时,需要在 Android 应用中使用 Facebook SDK。为了保证应用与 Facebook 的通信安全,需要在 Facebook 开发者平台配置密钥哈希,并在应用中设置相应的内容。

什么是密钥哈希?

密钥哈希是将一段文本通过哈希算法转化为固定长度的字节串,常用于验证消息的完整性和真实性。在 Android 应用中,常用密钥哈希作为加密和数字签名的关键。

在 Facebook 开发者平台配置
  1. 在 Facebook 开发者平台中创建应用
  2. 在"设置" -> "基本" -> "基本设置"下找到"密钥哈希"(Key Hashes)。
  3. 输入如下命令生成密钥哈希:
    keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
    
  4. 复制生成的密钥哈希到"密钥哈希"(Key Hashes)处,保存即可。
在 Android 应用中设置密钥哈希

在 Android 应用中设置密钥哈希,可通过以下两种方式:

1. 使用 Facebook SDK 自动生成密钥哈希

在应用中集成 Facebook SDK 后,可以使用以下代码生成密钥哈希:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
        "com.your.package.name",
        PackageManager.GET_SIGNATURES);

    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.d("KeyHash", Base64.encodeToString(md.digest(),
                          Base64.DEFAULT));
    }
} catch (NameNotFoundException e) {

} catch (NoSuchAlgorithmException e) {

}

将上述代码复制到应用中表示生成成功。产生的密钥哈希可在 Android Studio 的 Logcat 中查看。

2. 手动生成密钥哈希

手动生成密钥哈希,也可以使用以下命令:

keytool -exportcert -alias <alias_name> -keystore <keystore_path> | openssl sha1 -binary | openssl base64

其中 <alias_name> 表示密钥别名, <keystore_path> 表示密钥库路径。

注意事项
  • 发布应用前,需要使用正式签名生成并设置密钥哈希。
  • 不同签名的应用需要分别在开发者平台中生成密钥哈希。