Facebook密钥哈希不匹配任何存储的密钥哈希值

我真的有Facebook的哈希键的麻烦。 我生成它在我的Eclipse ..certificate:

然后我去了https://developers.facebook.com/并注册了一个新的应用程序。

最后,我已经设置了我的hashkey在Facebook开发人员的设置:

但是,我不知道我做了什么我不断得到相同的错误日志:“密钥散列B5dWUEYfZJL / ……….. jyA =不匹配任何存储的密钥散列”

有人知道我做错了什么,或者我该如何解决这个问题? 如果我使用我自己的应用程序中的HelloFacebookSample的ID和名称一切正常。 所以它必须做的关键哈希,身份证或名称我设置的地方最有可能的..

谢谢,Yenthe

经过几个小时的努力,我终于find了解决办法。

  1. 删除Facebook网站上的任何应用程序(developers.facebook.com)
  2. 删除C:\Users\yourUserName\.android下的debug.keystore文件
  3. 生成一个新的密钥(通过再次运行您的应用程序)
  4. 在developers.facebook.com上创build一个新的应用程序,并添加新的散列键
  5. 重新运行你的应用程序
  6. 更迭!

从Eclipse / keytool添加SHA1键只有在FB上创build应用程序时才帮助我,然后在重build后我总是会得到OP错误。

什么解决了我的问题是将错误消息中的密钥添加到Facebook仪表板设置。

我在开发时面临同样的问题,需要获得散列键testingFacebook上的共享,而在解决这个问题时,我经历了几个问题

1-命令facebook提供的通过使用openSSL命令获得散列键没有给我正确的散列,我通过从代码的包信息中提取签名。 以第二种方式获得散列是正确的。

2,出于某种原因,在文档中,他们告诉你去开发者设置,并在那里添加“示例应用程序”的散列键,我认为每个开发人员的hashkey应该在那里,这是我的错误,每个应用程序都有它自己的哈希键字段添加到,去你的应用程序/设置/机器人。

在这里输入图像描述

以及这是..和logging我在Windows 7 x64位上使用openssl-0.9.8k_X64,它只是产生一个错误的哈希我不知道为什么

我用这个代码来得到哈希:

 private void printKeyHash() { // Add code to print out the key hash try { PackageInfo info = getPackageManager().getPackageInfo("YOUR PACKAGE NAME", 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)); } } catch (NameNotFoundException e) { Log.e("KeyHash:", e.toString()); } catch (NoSuchAlgorithmException e) { Log.e("KeyHash:", e.toString()); } } 

但要小心,这可能不会打印logging正确的keyhash,至less在我的设备和机器上,当我debugging它,在手表它显示正确的散列之前打印日志,但在日志中显示另一个哈希和第一个是正确的。

无论如何,你也可以使用命令或eclipse来查看你的密钥的SHAhex序列,并将其转换为64位在线,有网站可以帮助http://tomeko.net/online_tools/hex_to_base64.php?lang=en

祝你好运

如果您的login名没有安装Facebook应用程序,并且由于错误“哈希键不匹配”而安装了Facebook应用程序时无法正常工作,请执行以下步骤

1)启动你的应用程序,并尝试用Facebooklogin。 一个对话框将会打开,并告诉你:“在Facebook开发者控制台中没有find该键,并显示散列键。

2)记下哈希键。

3)把它放到你的Facebook开发者控制台,你首先生成你的API密钥,并删除与新的保存散列键。 现在你完成了。 任何下载您的应用程序,与早期使用的密钥库发布可以login到Facebook。

我遇到了类似的问题。 解决scheme非常简单。

错误消息如下所示:

 07-05 ...... Invalid key hash. The key hash sL1***************VY= does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/150*******778 07-05 ...... at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:191) 

只需login到https://developers.facebook.com ,select“设置”选项卡,并将密钥散列“sL1 *************** VY =”添加到已保存的列表Android面板中的关键哈希。

我现在有这个问题已经两个月了。 我的关键哈希值已经达到了9.今天,我终于find了简单的解决scheme:

步骤1:

安装您从手机上的Facebook开发者页面下载的Facebook sdk。 不要安装正常的Facebook应用程序。 确保你可以login到Facebook。 然后注销。

第2步:

导出您的应用程序与您的最终版本密钥作为apk,就像你上传到游戏存储时一样。

第3步:

通过USB电缆或USB棒将Apk文件放在手机上。

步骤4:

使用文件pipe理器安装您的应用程序:例如https://play.google.com/store/apps/details?id=com.rhmsoft.fm

第5步:

启动您的应用程序,并尝试使用Facebooklogin。 一个对话框将打开并告诉你:“在Facebook开发者控制台中没有find密钥

步骤6:

记下钥匙。

STEP 7:

把它放到你的Facebook开发者控制台并保存。 现在你完成了。 任何下载您的应用程序,与早期使用的密钥库发布可以login到Facebook。

请享用

这看起来很疯狂,但它的工作

真的问题,因为你的私人Facebook帐户得到这个应用程序和该帐户的哈希键没有可比性

但是你真的无法面对真正的用户这个错误。 但我不确定

最后按照下一步:

  1. 转到您尝试login的私人Facebook帐户
  2. 然后点击应用程序目录中的更多

在这里输入图像描述

  1. 点击设置

在这里输入图像描述

然后点击交叉

在这里输入图像描述

现在你可以loginFacebook。 但下一次,如果你注销,并会尝试再次login,你面临着同样的问题…

这也很奇怪…

但我不信任脸谱不知道这个…

  1. 检查您的密钥哈希值。
  2. 从手机上卸载Facebook应用程序。
  3. 然后再试一次使用SDK。

这解决了我的问题。

使用debugging密钥存储包括android.deroid文件夹中存在的debug.keystore会产生一个奇怪的问题; 在Android应用程序login使用Facebookloginbutton会发生完美的第一次所需的。 但是,当我注销并尝试login时,它会抛出一个错误说:这个应用程序没有configurationAndroid密钥散列。 请转到http:// ….

使用keytool命令(keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -sigalg SHA1withRSA -keysize 2048 -validity 10000)创build一个密钥库,并把这个密钥库放在我的项目最上面的父文件夹中,在项目build.gradle文件中input以下问题解决了问题:

  signingConfigs { release { storeFile file("my-release-key.keystore") storePassword "passpass" keyAlias "alias_name" keyPassword "passpass" } } 

请注意,您总是在android活动的onCreate()中使用以下方法来获取关键哈希值(在您的应用的developer.facebook.com网站中注册),而不是使用命令行生成哈希值作为命令行有些情况下可能会出错键哈希:

  public void showHashKey(Context context) { try { PackageInfo info = context.getPackageManager().getPackageInfo("com.superreceptionist", PackageManager.GET_SIGNATURES); for (android.content.pm.Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT); Log.e("KeyHash:", sign); // Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show(); } Log.d("KeyHash:", "****------------***"); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } 

我遇到了同样的问题。 我发现我使用了错误的hashkey。 keytool打印错误的hashkey,因为我运行错误的别名的命令。
请再次检查你的命令,它会解决你的问题

 C:\Users\Duc Hanh>keytool -exportcert -alias "test fb sdk" -storepass android -keypass android -keystore "E:\Dropbox\keystore.keystore" | openssl sha1 -bina ry | openssl base64 

检查你的google-services.json。 可能是不一样的。 下载你最新的google-services.json,然后运行应用程序。 希望它有帮助。

我得到了相似的问题。 签署和发布我的应用程序到谷歌PlayStore后,似乎哈希已经改变。 我在Facebook的消息中添加了新的哈希(如上所述),在developers.facebook.com/app//settings上我的应用程序中的哈希。 现在它再次运作。

“启用单一login为您的应用程序”这就是为什么它只能工作一次。 请去developer.facebook和检查settings.it为我工作