Facebook android app error:无效的密钥哈希

时间:2015-06-19 09:09:23

标签: android hash facebook-sdk-4.0

我已将Facebook SDK导入到我的android项目中,我第一次从我的Android应用程序登录到Facebook工作,但第二次出现此错误:

  

无效的密钥哈希。关键哈希" ..."与任何存储的密钥都不匹配   哈希值。配置您的应用密钥哈希值   http://developers.facebook.com/apps/ ..

我也尝试输入他们在此错误中提供的密钥,但它没有用。

编辑: 我使用了cmd命令来生成一个密钥并要求输入密码" android"

6 个答案:

答案 0 :(得分:9)

Keyhashes与从不同系统生成的.apk文件不同。所以最好的解决方案是 - 当你收到错误时

  

“无效的密钥哈希。密钥哈希"<KEYHASH>"与任何...#

都不匹配

然后编写或复制"<KEYHASH>"并将其放入Facebook开发者页面,转到apps-> settings-> android。如果不起作用,请在从错误中复制的keyhash之后放置"=",然后重试。别忘了过你的项目。

答案 1 :(得分:6)

据我所知,您已经获得了密钥哈希,但我仍然会在此处输入用于在控制台中获取密码的代码。

PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.your.project.package", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} catch (PackageManager.NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}

"com.your.project.package"是项目的包裹=)

接下来,不要删除以前的密钥哈希,我认为它们不会发生冲突。例如,我的Facebook应用程序中有2个键盘。

最新的事情,我认为这是问题所在。在developers.facebook上转到应用的状态和评论。并将您的应用程序转为公开。 public access to app

答案 2 :(得分:6)

您应该获得新密钥;

步骤1.如果您没有OpenSSL lib,请下载here

步骤2.然后提取它。 在C:/中创建一个文件夹-OpenSSL,并在此复制提取的代码。

步骤3.然后打开cmd并转到C:\Program Files\Java\jdk1.7.0_79\bin

步骤4.然后执行此命令 -

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

步骤5.获取密钥并转到开发者Facebook网站

步骤6。为项目添加密钥。

就是这样。

答案 3 :(得分:5)

添加应用程序中提供的密钥

http://developers.facebook.com/apps/

此外,最后添加"="符号

离。你得到2jmj7l5rSw0yVb/vlWAYkK/Y 比在Facebook页面, 添加2jmj7l5rSw0yVb/vlWAYkK/Y= 最后"="个符号非常重要。

我花了一个小时生成了关键字,而不是试过这个技巧。

答案 4 :(得分:0)

有两种可能的解决方案可能会有所帮助,其中每种方案都可以在不同时间为我完成,所以我们就这样做了。

(假设您输入了应用告诉您的哈希键并且没有为您工作)

  1. 您应该删除通常位于&#34; C:\ Users \ yourUserName.android &#34;中的de debug.keystore文件,然后重新编译项目,并获取新的哈希密钥新的debug.keyhash(如here所述)。然后这些新的keyhash应该可以工作。
  2. 2.这些有点棘手。也许你的facebook开发人员仪表板密钥哈希即使你输入它也不起作用的原因是因为你的facebook应用程序ID在你构建apk时已经改变了(这发生在我身上,因为我有我的应用程序的先前版本并且它给了我过去的id,即使我在config.xml中指定了它。所以,在我的情况下,我有一个cordova项目,所以我去了&#34; C:your_CordovaProject \ platforms \ android \ res \ values \ facebookconnect.xml &#34;并打开文件,在这里你要检查fb_app_id是否与你的facebook仪表板中的相同。如果不是(在我的情况下不是这样)你要做的就是 - 删除你的facebook插件, - 再说一遍 - 再次指定您的应用ID和名称,如下所示:

    cordova插件添加cordova-plugin-facebook4 --save --variable APP_ID =&#34; 123456789&#34; - 变量APP_NAME =&#34; myApplication&#34;

    然后我再次进行了哈希键处理并且它有效。希望它有所帮助

答案 5 :(得分:0)

这对我有用。

将APK复制到Program Files \ java \ jdkX.X.X_XXX \ bin文件夹中的PC中

在我的情况下是C:\ Program Files \ Java \ jdk1.8.0_191 \ bin

在此目录中打开CMD并输入以下内容

keytool -list -printcert -jarfile YOUR_APK_NAME.apk

将SHA1值复制到剪贴板中将类似于以下内容:79:D0:E6:80:4E:28:1E:D1:88:28:CB:D7:E6:BE:2E:0C:FB :24:98:52

然后转到http://tomeko.net/online_tools/hex_to_base64.php将SHA1值转换为base64。

这是Facebook所需要的,获取生成的哈希值“ ******************** =”并将密钥哈希值复制到您的Facebook开发人员应用程序设置中。