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