我从android下面的代码中获得了哈希键:
try {
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(),
PackageManager.GET_SIGNATURES);
for (Signature signature : packageInfo.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
}
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());
}
但它是无效密钥...请建议如何验证Facebook登录的哈希密钥....
答案 0 :(得分:9)
您正在使用调试密钥获取哈希键...如果您未在调试模式下签署包并运行应用程序,则可能会有效。你需要做的是:
1)转到清单文件并添加到应用程序android:debuggable =“true”。
2)签署应用程序,使用capy并手动安装到您的设备或从命令行使用“adb install path_to_apk”。
3)现在运行你的应用程序并监控logcat。
4)你会得到一个新的密钥,它将是一个匹配的密钥,密钥facebook应用程序显示在错误信息中,你所拥有的密钥现在在最后一个有一个=符号。
5)在Facebook开发者网站上注册此密钥
替代技巧
你可以做另外一件事只需注册错误信息中显示的密钥msg“密钥散列###与任何存储的密钥哈希都不匹配”只需在###的末尾添加=。它就像### =
你结束了!!希望这会奏效。答案 1 :(得分:1)
将此函数添加到您的类中,并在oncreate方法中调用此函数,然后在您的设备中生成sign apk并运行sign apk并检查log-cat,将生成的哈希密钥复制到Facebook开发人员控制台。
private void showHashKey()
{
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.kisan.kisan",
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 (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
检查facebook身份验证,它会正常工作
答案 2 :(得分:0)
我认为问题是你可能没有更新facebook开发者帐户中的keyhash。请参阅:https://developers.facebook.com/docs/android/getting-started
使用以下方法生成Keyhash:
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
并在“应用程序”标签下的“常规设置”
下更新到您的Facebook开发者网站答案 3 :(得分:0)
在点击时将其分配给按钮,并从logcat获取Key Hash。
Button getKeyHash = (Button) findViewById(R.id.button_key_hash);
getKeyHash.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Key Hash
try {
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(),
PackageManager.GET_SIGNATURES);
for (Signature signature : packageInfo.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.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());
}
}
});
现在转到https://developers.facebook.com/apps的应用 。然后点击设置,添加密钥哈希并保存。