0

我正在使用 FacebookSDK 并按照所有步骤生成新的密钥哈希,使用调试密钥库生成的密钥哈希就像一个魅力,但使用我们自己的几个密钥库生成的密钥哈希不起作用,然后我尝试了故障排除中给出的功能,但它仍然不起作用. 我尝试在 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");
        }

它给了我一个 keyhash,我在 Facebook 应用程序设置中插入了它,没有解决方案!现在我想知道使用keyhash的概念,facebook如何识别它?如果我只是使用调试 keyhash 上传应用程序会发生什么?

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

任何人都可以对此有所了解。

4

1 回答 1

0

是的,确实如此。facebook 知道您的应用程序签名并验证它以了解尝试进行身份验证的应用程序是否是正确的。我猜我的 System.out.println 中的某些东西是错误的,我使用了来自https://stackoverflow.com/a/9600642/243354的以下代码

您可以插入此代码,导出 apk,因为您将签署它以供发布,然后将该 apk 加载到模拟器并检查 logcat 的哈希键标签,一旦找到,更新到 facebook 设置。

于 2013-07-31T13:31:26.417 回答