android - Google Play 应用签名 - KeyHash 不匹配

标签 android facebook signing

我正在使用新的 Google Play App Signing 来签署我的应用程序,但存在不匹配的 key 哈希。

我在我的应用程序中集成了 Facebook 登录,它说 keyhash 无效。 我的 APK 的 keyhash 版本与 Google Play 应用签名过程创建的 keyhash 版本不同。

编辑:我做的步骤:

1) 创建了一个 jks keystore 文件。

2) 创建了一个使用 jks 文件签名的 apk 版本。

3) 在 Google Console Developer 中导入 APK,订阅 Google Play App Signing 修改签名 key 。

4) 在线后,我下载并打开应用程序,Facebook 初始化提示:无效的 key 散列

当我通过下面的代码检查应用程序中的哈希键时,哈希键与 Facebook 所说的无效哈希键不同:

  try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.package",
                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 (PackageManager.NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

即使我将 Facebook 所说的 hashkey 放在 Facebook 仪表板中,它也不起作用。 Google Play App Signing 似乎在签名过程中修改了 hashkey。 你有解决它的想法吗?

最佳答案

您必须使用 Google 生成的 SHA-1 key 。以下步骤将修复它。

1).转到 Google 控制台 => 你的项目 => 设置 => App Integrity => App signing key certificate

2).从那里复制 SHA-1 证书,因为它是十六进制,并且由于 Facebook 在base64 中需要它,所以使用步骤 3 中显示的命令p>

3).回显 步骤 2 中的 SHA-1 key (十六进制) | xxd -r -p | openssl base64
此命令在命令提示符中不起作用,请使用windows 上的 bashgit cli

4).将 base64 key 粘贴到 Facebook 控制台 => 设置 => 基本 => key 散列

关于android - Google Play 应用签名 - KeyHash 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798378/

相关文章:

android - 如何分析混淆的第 3 方库代码的泄漏痕迹

javascript - Facebook Marketing API 广告素材

xcode - 如何签署 Mac OS X 应用程序?

android - Android Studio 0.211不再支持签名APK

android - 将android应用程序连接到MYSQL数据库

android 495KB 图像占用 10MB 的堆大小

android - 连接到 connect() 处的 url 时出现 IO 异常

c# - .NET Facebook 游戏的推荐架构

php - 使用 Facebook PHP-SDK 3.x 通过 Codeigniter 2.1.0 注册/登录用户

rpm - 尝试签署 RPM 时出错