我正在尝试使用Facebook Android SDK通过Facebook登录按钮开发一个简单的应用程序。 但是我遇到了Key Hashes的问题。我创建了一个调试密钥和一个发布密钥:
调试密钥:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
发布密钥:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
然后我在Facebook Developers页面中复制了这个键哈希。 当我导出apk并将其复制到设备中时它运行良好,但是当我尝试从Eclipse安装应用程序时(作为/应用程序运行/作为Android应用程序)它不起作用。似乎应用程序正在使用与使用keytool创建的密钥哈希不同的密钥哈希。 谁知道如何解决这个问题?
答案 0 :(得分:23)
尝试从这里获取HashKey
public static void showHashKey(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
"com.example.tryitonjewelry", PackageManager.GET_SIGNATURES); //Your package name here
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
答案 1 :(得分:2)
try {
PackageInfo info = getPackageManager().getPackageInfo("your pakage name here", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("KeyHash:", "key is: "+Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
Log.e("error","error name not found");
} catch (NoSuchAlgorithmException e) {
Log.e("error","error no algorithm");
}**strong text**
通过使用这个,你可以得到你的密钥哈希,然后在Facebook开发者网站上使用这个。
答案 2 :(得分:0)
try {
PackageInfo info = getPackageManager().getPackageInfo("your package name", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", "KeyHash: " + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
}
catch (PackageManager.NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}