HelloFacebookSample无效,Facebook SDK更新状态:Android

时间:2014-03-13 14:11:55

标签: android facebook

我正在尝试从Facebook SDK中获取HelloFacebookSample,但是我遇到了一些问题。发布状态更新显示Facebook对话框,看起来很棒,但是当我按下分享按钮时收到错误,“(#404)密钥散列XXX-XXXX与任何存储的密钥哈希值不匹配”。我想知道在我的过程中我做错了什么。这就是我所做的。

1)我做了keytool -exportcert -alias androiddebugkey -keystore“path”\ debug.keystore | openssl sha1 -binary | openssl base64

我从cmd运行了上面的内容,并收到了一个哈希值。这似乎有效,因为FB文档中提到的所有内容都发生了,这意味着我被提示输入密码而我使用了“android”,之后我立即获得了一个数字。

2)我拿了我的号码,并在创建一个名为“Example”的应用程序后将其输入开发人员门户。我有截图,我把它放在哪里。

enter image description here

3)然后我回到示例项目,并更改了应用程序ID以匹配我的开发人员门户网站(在上面的屏幕截图中)。

在那之后,我认为事情会很好。但我仍然收到这个错误。然后我尝试使用代码片段获取密钥哈希。在我的onCreate中,我有以下内容:

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                PackageManager.GET_SIGNATURES);

        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (NameNotFoundException e) {
            Log.d(TAG, "NameNotFoundException");
        } catch (NoSuchAlgorithmException e) {
            Log.d(TAG, "NoSuchAlgorithmException");
        } 

返回的是“NameNotFoundException”,因此没有键。我如何让这个工作,我的步骤中缺少什么?提前谢谢。

1 个答案:

答案 0 :(得分:7)

你的代码很好,我第一次得到了NameNotFoundException

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook",
                PackageManager.GET_SIGNATURES);

        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.e("KeyHash:",
                    Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {
        Log.d("NameNotFoundException", "NameNotFoundException");
    } catch (NoSuchAlgorithmException e) {
        Log.d("NameNotFoundException", "NoSuchAlgorithmException");
    }

然后我更改了PackageInfo info = getPackageManager().getPackageInfo( "MY.PACKAGE.NAME.GOES.HERE", PackageManager.GET_SIGNATURES);

中的包

确保您项目的清单文件中的包名称为com.facebook.samples.hellofacebook,否则无法使用。