密钥哈希......不匹配任何存储的密钥哈希

The key hash ...... does not match any stored key hashes

当我正要 post 在 facebook 中发消息时,我在 facebook 登录页面上收到以下错误消息。

'Invalid key hash. The key hash ...... does not match any stored key hashes'

我正在使用各种 Android 设备。

  1. 当我使用 Galaxy s3 时,我没有收到错误。

  2. 但是当我使用 Galaxy s4 时,出现错误。

  3. 当我使用 Nexus 5 时,我没有收到错误

  4. 但是我用Xperia A的时候报错

为什么会出现这种症状?

我尝试按照以下命令生成密钥哈希。

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

但显示相同的错误。我还尝试在 Facebook 开发者网站上输入哈希键。哈希键在错误消息中。但是没用。

我找到了一个解决方案。

当我删除我的应用程序和 Facebook 之间的连接时,我可以 post 一条消息。

但我认为删除连接是不寻常的解决方案。 此外,即使我可以 post 使用 Galaxy s4,我也不能 post 使用 Xperia A。 即使我可以 post 使用 Xperia A,我也不能 post 使用 Galaxy s4。

我该如何解决这个问题?如果有知道答案的请告诉我解决办法

您可以使用以下代码生成 keyhash 以上传到 facebook 开发者网站:

/**
 * generates key hash for facebbok
 */
private void GetKeyHash()
{

    PackageInfo info;
    try
    {
        info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures)
        {
            MessageDigest md;
            md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String keyhash = new String(Base64.encode(md.digest(), 0));
            // String something = new String(Base64.encodeBytes(md.digest()));
            Log.e("keyhash", "keyhash= " + keyhash);
            System.out.println("keyhash= " + keyhash);
        }
    }
    catch (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());
    }

}

尝试将此代码放在应用的第一个屏幕中。

  1. 运行 您的应用,然后检查 logcat 以获取调试密钥哈希。

  2. 要获取签名密钥哈希,创建签名 APK,在设备中安装并打开应用程序,然后检查该设备的 logcat。

在这两种情况下,logcat 将显示如下内容:

04-10 12:07:33.710: E/keyhash(362): keyhash= ncoE5ojihY80FbI23/xEAdSfeS0=
04-10 12:07:33.710: I/System.out(362): keyhash= ncoE5ojihY80FbI23/xEAdSfeS0=

一旦你得到这些密钥哈希(调试和签名),将它们上传到 facebook 开发者网站,然后做任何你想做的事。

Reference link

希望这对您或其他人有所帮助。