facebook login - 无效的哈希密钥 - 为什么它引用了我的代码中没有的哈希密钥?

时间:2014-08-02 15:14:33

标签: android facebook facebook-graph-api

我按照此页面上的信息,按照说明将facebook登录集成到我的Android应用程序中。 https://developers.facebook.com/docs/android/getting-started

编写代码后,当我点击“使用Facebook登录”时,我在Facebook页面上遇到错误。错误状态

  

无效的密钥哈希。密钥哈希[ZmdB ....]与任何存储的密钥哈希都不匹配。在developers.facebook.com/apps/[appID]

配置您的应用密钥哈希值

密钥散列[ZmdB ...]在我的代码中不存在,所以我不知道为什么它出现在错误中。

我确实使用facebook网站上的说明生成了应用程序的密钥哈希,只有我自定义了我的环境(此处显示的通用版本):keytool -exportcert -alias androiddebugkey -keystore%HOMEPATH%.android \ debug.keystore | openssl sha1 -binary | openssl base64

我使用了生成的密钥哈希并将其添加到我的平台[Android]和密钥哈希下的Facebook开发者网站上。出现在那里的密钥哈希与facebook报告的错误不同,它是一个完全不同的值。

我在代码中搜索了facebook报告为错误的值,但在我的代码中找不到它,也没在facebook开发者网站上找到它。

我无法弄清楚下一步应该做些什么,看看我怎么也无法确定这个错误哈希的来源。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

密钥散列[ZmdB ...]在我的代码中不存在,所以我不知道它出现在错误中的原因

这是在开发环境中标识您的应用的唯一字符串。它不在您的源代码中。

您不需要从命令行生成keyhash。如果您在链接上进一步阅读,则会有一个代码来打印密钥哈希:

// Add code to print out the key hash
try {
    PackageInfo info = getPackageManager().getPackageInfo(
            "com.facebook.samples.hellofacebook", //your unique 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));// this line  gives your keyhash
        }
} catch (NameNotFoundException e) {

} catch (NoSuchAlgorithmException e) {

}

另外facebook本机应用程序将显示密钥哈希以及错误。你也可以打字。