我尝试使用Facebook Android SDK通过Facebook登录按钮开发一个简单的应用程序。但是我遇到了Key Hashes的问题。我已经创建了调试密钥和释放密钥:(在mac中)
调试密钥:
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
我也试过这段代码
public static void showHashKey(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
"com.example.me", 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) {
}
}
然后我在Facebook Developers页面中复制了这个关键哈希。当我用eclipse运行我的应用程序然后工作。但是当我导出apk并将其复制到设备中时它无效。 我还有另一个问题。如果我的设备安装了Facebook应用程序,那么也无法正常工作。 我怎么能解决我的问题?
答案 0 :(得分:2)
当您获得无效密钥哈希时,它还会显示正确的密钥哈希,并说“密钥哈希XXXXX与任何存储的密钥匹配都不匹配”。所以复制显示的keyhash并在末尾附加“=”作为XXXXX =并将其添加到密钥散列部分。希望它有效....
这可能也有效
public static void showHashKey(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
"com.example.me", 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) {
}
}