当前位置: 首页 > 知识库问答 >
问题:

使用Android Facebook sdk的密钥哈希无效[重复]

班浩皛
2023-03-14

我知道它很古老,有很多类似的问题。我已经看到了不同的答案,但问题仍然出现在我的申请中。

我正在应用程序中的Facebook登录工作。在上传到谷歌播放之前,它在本地运行良好。但是在谷歌播放上发布后,它会给出无效密钥哈希的错误。

我已经使用下面给出的代码在Android Studio上生成了一个密钥哈希,并将其保存在Facebook开发者控制台上。在Facebook开发者控制台中,我也将应用程序上错误消息中的密钥哈希放在了应用程序上,但它仍然给我同样的错误。

PackageInfo info;
        try {
            info = getPackageManager().getPackageInfo("i.am.peace.by.murgency", 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());
        }

通过终端与此语句:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

共有2个答案

卢普松
2023-03-14

要在发布APK中使用Facebook SDK,还需要在Facebook开发者控制台中添加发布密钥哈希和调试密钥哈希。

代码和终端生成的密钥是调试密钥。您需要生成一个发布密钥,如下所述,并添加到您的Facebook开发者控制台。

如果你在mac电脑上,将其粘贴到终端上以生成释放密钥-

keytool -exportcert -alias androiddebugkey -keystore ~/.android/release.keystore | openssl sha1 -binary | openssl base64

如果您在Windows上,在命令提示符下,转到JDK文件夹并粘贴它以生成释放密钥-

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

请注意,上面的androiddebug键是别名。请确保生成发布键时的别名与生成调试键时的别名相同。

更多信息在这里-https://developers.facebook.com/docs/android/getting-started#release-密钥散列

纪勇军
2023-03-14

看,你生成的KEY HASH与调试键~/. android/debug.keystore但你需要在这里设置你的密钥,你使用发布在谷歌播放~/. android/release.keystore

keytool -exportcert -alias androiddebugkey -keystore ~/.android/folder_with_your_release_key/release.keystore | openssl sha1 -binary | openssl base64

并生成密钥哈希添加到facebook开发者控制台

一步一步:转到https://developers.facebook.com并打开设置-

 类似资料:
  • 我无法让我的应用程序允许脸谱网登录。每次用户试图登录脸谱网并用他们的FB验证我的应用程序时,都会给我这个错误: 无效的密钥散列。它们的密钥散列xxxxxxxxxx=不匹配任何存储的密钥散列。在http://developers.facebook.com/apps/xxxxxxxx配置你的应用密钥散列 我已经尝试过通过OpenSSL工具创建一个新的密钥哈希,如下所示: 这样做会给我一个密钥哈希,然后

  • 如果我在hashmap中输入一个键和值,并且基于键hashcode生成的索引大于15,并且映射大小仍然小于阈值(即12),会发生什么? 提前谢谢。

  • 在我的一个应用程序中,我需要从Facebook获取数据。。。我正在这样做: 我已经创建了应用ID。它成功登录,但在注销后,我登录,然后它会给我: 我怎么了?我正在使用Facebook SDK。。。我已经在手机上安装了Facebook。。。它在模拟器中运行良好,但没有安装内置的Facebook应用程序。 这是我的代码:

  • 我已经完成了一个android应用程序的开发,该应用程序使用facebook sdk与facebook集成。目前,我对这个应用程序没有任何问题需要解决,因为它功能齐全,运行良好——但尽管如此,我相信即使应用程序正在运行,我仍然不完全理解Android密钥散列是什么 1)据我所知,facebook sdk为开发者提供了一个独特的应用程序id,以了解他们与谁“交谈”,这样他们也可以控制谁是谁之类的人,

  • keytool-exportcert-alias diego-keystore“c:\users\diego\desktop\celuchat.keystore”“c:\openssl\bin\openssl.exe”sha1-binary“c:\openssl\bin\openssl.exe”base64 celuchat.keystore是我在导出签名的应用程序时使用的密钥库,当keytool

  • 我正在使用codeigniter rest服务器api库。 我进去的时候http://localhost/projects/myapi/key/index_put.php然后按enter键会出现以下错误: 当我在url中给出一个伪字符串时,如: http://localhost/projects/myapi/key/index_put.php?X-API-KEY=ASLDFJ9ALSDJFLJA9