密钥哈希facebook android sdk无效

时间:2014-10-07 07:58:25

标签: android eclipse adt android-facebook

我尝试使用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应用程序,那么也无法正常工作。 我怎么能解决我的问题?

1 个答案:

答案 0 :(得分:2)

当您获得无效密钥哈希时,它还会显示正确的密钥哈希,并说“密钥哈希XXXXX与任何存储的密钥匹配都不匹配”。所以复制显示的keyhash并在末尾附加“=”作为XXXXX =并将其添加到密钥散列部分。希望它有效.... enter image description here

这可能也有效

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) {
    }
}