我按照此页面上的信息,按照说明将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开发者网站上找到它。
我无法弄清楚下一步应该做些什么,看看我怎么也无法确定这个错误哈希的来源。有什么想法吗?
答案 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本机应用程序将显示密钥哈希以及错误。你也可以打字。