我试图从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"); }
返回的是"NameNotFoundException",所以没有键.我如何让这个工作,我在步骤中缺少什么?提前致谢.
你的代码很好,我第一次得到了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
可用.