Android Facebook发布密钥\u散列

Android Facebook发布密钥\u散列,android,facebook,facebook-android-sdk,Android,Facebook,Facebook Android Sdk,我对生成密钥哈希有问题。 我做了两个关键点: C:\openssl\bin>"C:\Program Files\Java\jre7\bin\keytool.exe" -exportcert -alias forumurology -keystore uroweb7228.keystore | openssl sha1 -binary | openssl base64 Enter keystore password: ******* c/6e5fY8Rg3Gshn1TKucia***/A=

我对生成密钥哈希有问题。 我做了两个关键点:

C:\openssl\bin>"C:\Program Files\Java\jre7\bin\keytool.exe" -exportcert -alias forumurology -keystore uroweb7228.keystore | openssl sha1 -binary | openssl base64
Enter keystore password:  *******
c/6e5fY8Rg3Gshn1TKucia***/A=

C:\openssl\bin>"C:\Program Files\Java\jre7\bin\keytool.exe" -exportcert -alias a
ndroiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
Enter keystore password:  android
3L0oeMh7uk9YWE0sYavUuT***yU=
然后将其保存到我的facebook应用程序设置中。 运行release.apk时,出现错误:

10-21 16:48:11.583: W/fb4a(:<default>):BlueServiceQueue(20097): Exception during service
10-21 16:48:11.583: W/fb4a(:<default>):BlueServiceQueue(20097): com.facebook.http.protocol.ApiException: Key hash ypC1--aybTSQXdzXGLtM-_nXydI does not match any stored key hashes.
10-21 16:48:11.583: W/fb4a(:<default>):BlueServiceQueue(20097):     at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:83)
10-21 16:48:11.583:W/fb4a(:):BlueServiceQueue(20097):服务期间异常
10-21 16:48:11.583:W/fb4a(:):BlueServiceQueue(20097):com.facebook.http.protocol.ApiException:密钥哈希ypC1--aybTSQXdzXGLtM-nXydI与任何存储的密钥哈希不匹配。
10-21 16:48:11.583:W/fb4a(:):BlueServiceQueue(20097):位于com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:83)

这是因为设备正在创建一个新的密钥散列,该散列不在应用程序设置中。因此,您必须相应地更新keyhash。。在onCreate()中使用此选项


为什么不直接使用错误中的密钥散列呢?
try {
            PackageInfo info = getPackageManager().getPackageInfo("YOUR_PACKAGE_NAME", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                }
        } catch (NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }