关于android:keytool返回的哈希值对于Facebook来说太短了

keytool return a hash that too short for facebook

我在Android Studio中使用Window 7来构建我的应用程序。
我在facebook SSO中使用了登录系统。我按照步骤
如下面的教程。

如何创建Android Facebook密钥哈希?

我在powershell中输入了以下命令

$ keytool -exportcert -alias androiddebugkey -keystore"C:\\Documents and Settings\\Administrator.android\\debug.keystore" |"C:\\OpenSSL\\bin\\openssl" sha1 -binary |"C:\\OpenSSL\\bin\\openssl" base64

然后powershell返回小于28个字符的哈希,facebook不接受。

如何生成Facebook接受的密钥?


当我提供无效的密钥库路径时,我遇到了同样的问题-没有错误消息,只是奇怪的八字符长字符串。切换到

的路径

1
C:\\Users\\Username.android\\debug.keystore

解决了我的问题。


当我使用openssl-0.9.8k_WIN32.zip,仅生成TenDigitHash ==时,这发生在我身上,然后我返回使用openssl-0.9.8e_WIN32.zip,因此按预期方式生成了哈希。我正在使用Windows32bit


您需要使用以下代码生成的此哈希键:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void printHashKey(Context pContext) {
    try {
        PackageInfo info = getPackageInfo(pContext, PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i(TAG,"printHashKey() Hash Key:" + hashKey);
        }
    } catch (NoSuchAlgorithmException e) {
        Log.e(TAG,"printHashKey()", e);
    } catch (Exception e) {
        Log.e(TAG,"printHashKey()", e);
    }
}