Android:Facebook SDK的KeyHash背后的概念?

Android:Facebook SDK的KeyHash背后的概念?,android,facebook-android-sdk,facebook-sdk-3.0,Android,Facebook Android Sdk,Facebook Sdk 3.0,我正在使用FacebookSDK并按照所有步骤生成一个新的keyhash,使用debug密钥库生成的keyhash工作正常,但是使用我们自己的两个密钥库生成的keyhash不工作,然后我尝试了中给出的函数,但仍然不工作。我已经尝试在onCreate中使用以下代码 // Add code to print out the key hash try { System.out.println("Inside try for keyhash")

我正在使用FacebookSDK并按照所有步骤生成一个新的keyhash,使用debug密钥库生成的keyhash工作正常,但是使用我们自己的两个密钥库生成的keyhash不工作,然后我尝试了中给出的函数,但仍然不工作。我已经尝试在onCreate中使用以下代码

// Add code to print out the key hash
        try {
            System.out.println("Inside try for keyhash");
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.myapp.facebookint", 
                    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));
                System.out.println("KeyHash:"+Base64.encodeToString(md.digest(), Base64.DEFAULT));
                }
        } catch (NameNotFoundException e) {
            System.out.println("keyhash name not found");
        } catch (NoSuchAlgorithmException e) {
            System.out.println("keyhash algo not found");
        }
它给了我一个密钥哈希,我把它插入了Facebook应用程序设置中,没有解析!现在我想知道使用keyhash的概念,facebook是如何识别它的?如果我只是使用debug keyhash上传应用程序,会发生什么

我的印象是facebook将keyhash与应用程序本身的签名相匹配,如果两者都使用相同的密钥库进行签名,则允许应用程序进行身份验证,但事实似乎并非如此。当我像准备发布一样导出应用程序,通过文件资源管理器将apk下载到手机中,并尝试从那里安装和运行时,它与调试模式下的操作相同


有谁能解释一下这一点。

是的,确实如此。facebook知道你的应用程序签名,并对其进行验证,以确定尝试验证的应用程序是否正确。我猜我的System.out.println中有什么地方出错了,我使用了

您可以插入此代码,导出apk,因为您将对其进行发布签名,然后将该apk加载到emulator并检查logcat中的哈希键标记,一旦找到,更新到facebook设置