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

por*_*der 1 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"的应用程序,然后将我的号码输入开发人员门户.我有一个屏幕截图,我把它放在哪里.

在此输入图像描述

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");
        } 
Run Code Online (Sandbox Code Playgroud)

返回的是"NameNotFoundException",所以没有键.我如何让这个工作,我在步骤中缺少什么?提前致谢.

Qad*_*ain 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");
    }
Run Code Online (Sandbox Code Playgroud)

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

确保项目清单文件中的软件包名称是否com.facebook.samples.hellofacebook可用.