【问题标题】:Invalid Key Hash using Android Facebook sdk [duplicate]使用Android Facebook sdk的无效密钥哈希[重复]
【发布时间】:2018-01-10 17:05:16
【问题描述】:

我知道它非常古老,并且有很多类似问题的问题。我已经看到了不同的答案,但问题仍然出现在我的应用程序中。

我正在处理应用程序中的 Facebook 登录。在上传到 Google Play 之前,它在本地运行良好。但是在 Google Play 上发布后,它给出了 INVALID KEY HASH 的错误。

我使用下面给出的代码在 Android Studio 上生成了一个密钥哈希,并将其保存在 Facebook 开发者控制台上。在 Facebook 开发者控制台中,我还将错误消息中出现的密钥散列放在应用程序上,但它仍然给我同样的错误。

PackageInfo info;
        try {
            info = getPackageManager().getPackageInfo("i.am.peace.by.murgency", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md;
                md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String something = new String(Base64.encode(md.digest(), 0));
                //String something = new String(Base64.encodeBytes(md.digest()));
                Log.e("hash key", something);
            }
        } catch (PackageManager.NameNotFoundException e1) {
            Log.e("name not found", e1.toString());
        } catch (NoSuchAlgorithmException e) {
            Log.e("no such an algorithm", e.toString());
        } catch (Exception e) {
            Log.e("exception", e.toString());
        }

用这个语句通过终端:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

【问题讨论】:

  • 您的 Facebook 开发者控制台上是否有 2 个密钥哈希?我的意思是一个发布密钥和一个调试密钥,或者只是一个调试密钥哈希??
  • @Zoe,如果您阅读了我的问题,显然我在那里提到我已经阅读了很多消息,但我遇到了同样的问题。
  • @AsutoshPanda 感谢您的消息。在调试时,我将 Hashkey 从我的代码放到了 facebook。之后我没有放任何钥匙。只有我把错误消息键哈希放在那里。你能帮我修一下吗?
  • 检查我的答案。您还必须添加释放密钥。

标签: android facebook hash


【解决方案1】:

看,您使用调试密钥 ~/.android/debug.keystore 生成 KEY HASH 但您需要在此处设置您用于在 Google Play 上发布的密钥~/.android/release.keystore

keytool -exportcert -alias androiddebugkey -keystore ~/.android/folder_with_your_release_key/release.keystore | openssl sha1 -binary | openssl base64

并生成 KEY HASH 添加到 facebook 开发者控制台

一步一步: 转到https://developers.facebook.com 并打开 Settings->Basic->Android->Key Hashes 并在此处复制粘贴您使用 keytool 生成的 KEY HASH,但仅使用您的释放密钥,而不是调试(参见上面的命令)

【讨论】:

  • @Ihot 感谢您在此留言。你能不能给我更多的解释。
  • 我在上面做了一个并将它保存在那里,但它仍然给我同样的错误。
  • 您需要使用相同的密钥库为 facebook 签名应用并生成密钥哈希。然后将其添加到 facebook 控制台
  • 我犯了一个嗅觉错误。谢谢它有效:)
  • 嗨,Igor Kostenko,我遇到了同样的问题。其实我的应用程序登录facebook OK。因此,当我将版本 android 升级到 android x 时,我登录失败。它显示了无效的哈希键。我遵循了 facebook SDK 教程,我从我的应用程序生成的哈希键与 facebook 中的设置相同。我不知道这是怎么回事:(
【解决方案2】:

要在发布 APK 中使用 Facebook SDK,您还需要在 Facebook 开发者控制台中添加发布密钥哈希以及调试密钥哈希。

您从代码和终端生成的密钥是调试密钥。您需要生成如下所述的发布密钥并添加到您的 Facebook 开发者控制台。

如果您使用的是 Mac,请将其粘贴到终端上以生成释放密钥 -

keytool -exportcert -alias androiddebugkey -keystore ~/.android/release.keystore | openssl sha1 -binary | openssl base64

如果您在 Windows 上,在命令提示符下,转到 JDK 文件夹并粘贴它以生成发布密钥 —

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

请注意,上面的androiddebugkey是别名 姓名。确保生成发布密钥时的别名与生成调试密钥时的别名相同。

更多信息在这里 - https://developers.facebook.com/docs/android/getting-started#release-key-hash

【讨论】:

    猜你喜欢
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多