密钥哈希无效。关键XYZ不匹配

时间:2015-07-20 18:35:50

标签: android facebook facebook-graph-api

我知道类似的问题已被提出并得到回答,但我想知道的是为什么这种情况一直发生在我身上。要解决这个问题,我必须在Facebook中删除该应用程序,然后重新创建它。它工作,直到我断开手机,然后我得到同样的问题。我尝试添加应该不匹配的密钥,以及使用keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64生成调试密钥

我也尝试过使用代码:

try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.org.package", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String sign = Base64
                        .encodeToString(md.digest(), Base64.DEFAULT);

                Log.e("MY KEY HASH:", sign);

            }
        } catch (PackageManager.NameNotFoundException e) {
        } catch (NoSuchAlgorithmException e) {
        }

我已经解决了很多这些问题,但我似乎无法弄清楚如何避免这个问题再次出现,而不必在每次将设备重新连接到计算机时删除项目。奇怪的是,每当我收到错误时,它都是相同的键盘。

1 个答案:

答案 0 :(得分:0)

我认为您还没有在上面发布的代码中编写您的应用程序包名称而不是com.org.package

好吧,试一试将软件包名称更改为应用程序的软件包名称......

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "YOUR PACKAGE NAME HERE", 
                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) {

    }