2016-03-04 41 views
0

我正在创建使用Facebook登录SDK的Android应用程序。为什么keytool生成不同的facebook androiddebugkey哈希?

我想生成调试密钥散列。在Facebook网站上,我发现这个命令:

密钥工具-exportcert -alias androiddebugkey -keystore %HOMEPATH%.android \ debug.keystore | openssl sha1 -binary | OpenSSL的 的base64

我修改这个命令我的电脑上工作:

密钥工具-exportcert -alias androiddebugkey -keystore C:\用户\ redio \ .android \ debug.keystore | “C:\ OpenSSL的\ BIN \ OpenSSL的” SHA1 -binary | “C:\ OpenSSL的\ BIN \ OpenSSL的” 的base64

接下来,我输入的密码:安卓

此命令生成此哈希:QUhvjKstiP5gc7hPEzwF89mwHws =

然后我把它粘贴到Facebook开发者控制台 和Facebook仍然说,密钥哈希无效。我知道我可以从警告消息中复制密钥哈希,并将其粘贴到Facebook开发者控制台中。但我的问题是为什么keytool生成错误的密钥哈希?

+0

我之前有过这个,这是因为我输入了错误的密码,或者我使用了错误的调试密钥库。 – StuStirling

+0

是的,但我多次检查:/ – RediOne1

+0

我有同样的问题,我alwyas最终从复制它从警告味精 –

回答

2

我也有很多问题让keytool生成一个有效的散列,但我实现了下面找到的方法,并且能够注销一个有效的散列。代码的确切来源有点不清楚,但this blog post是一个很好的猜测。

public static String printKeyHash(Activity context) { 
    PackageInfo packageInfo; 
    String key = null; 
    try { 
     //getting application package name, as defined in manifest 
     String packageName = context.getApplicationContext().getPackageName(); 

     //Retriving package info 
     packageInfo = context.getPackageManager().getPackageInfo(packageName, 
       PackageManager.GET_SIGNATURES); 

     Log.e("Package Name=", context.getApplicationContext().getPackageName()); 

     for (Signature signature : packageInfo.signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      key = new String(Base64.encode(md.digest(), 0)); 

      // String key = new String(Base64.encodeBytes(md.digest())); 
      Log.e("Key Hash=", key); 
     } 
    } 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()); 
    } 

    return key; 
} 
+1

这是**非常好**,你已经显示/链接你得到这个代码。你是我见过的(迄今为止)唯一做过正确事情的人,并说明他们找到代码的来源。不幸的是,你发现的源代码也复制了代码。我不知道原始来源。然而,[最早发现的是2013-07-10](http://stacktips.com/tutorials/android/how-to-get-key-hashes-for-android-facebook-app)。您可能想要在那里提供一个指向代码的指针。 – Makyen

相关问题