3

当我尝试在 S3 上运行我的应用程序时出现以下错误

    Invalid android_key parameter. The key VgmNos1v_wYCwwxenlSneyDLza8 
does not match any allowed key. Configure your app key hashes at http://developers.facebook.com/apps/299************

我在我的第一台笔记本电脑上生成了一个密钥哈希,并在 facebook 开发者网站上添加了它。一切都很好,当我运行时,它要求在模拟器上进行 SSO,因此我能够发布。

几天后,我开始在不同的笔记本电脑上工作,并在 S3 上运行并收到此错误。谷歌搜索后,我发现我们需要将其添加为密钥哈希。我添加了错误中的密钥 VgmNos1v_wYCwwxenlSneyDLza8 并尝试了但仍然有效。因此,我在第二台笔记本电脑上生成了一个密钥哈希,并收到了一个与错误中的不同的密钥哈希 vyCoFm3xLkoFa8lp7l+LIAGhIe4=。所以我添加了两者,但错误仍然存​​在。

请帮帮我,因为我卡在这一点上非常糟糕:(

请注意:我仍处于调试模式。

我想知道密钥哈希是否与机器有关?每台机器都有唯一的密钥哈希?我使用以下命令在第二台笔记本电脑上生成密钥哈希

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\605577709\.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64
4

1 回答 1

7

是的,keyhash 取决于androiddebugkey& 它因设备而异。所以你可以做 -

  1. debug.keystore用户目录->.android 中的文件从旧 m/c 复制到新 m/c。

  2. 使用此代码获取新的密钥哈希 -

    try{ logger.debug("Checking signs");
        PackageInfo info = getPackageManager().getPackageInfo(this.getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            logger.debug(Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {
        e.printStackTrace();
        logger.debug(e.getMessage());
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
        logger.debug(e.getMessage());
    }`
    
于 2013-09-14T11:56:32.450 回答