3

我已将 Facebook 集成到我的应用程序中。我在模拟器和我的设备 HTC 中使用调试密钥哈希测试了我的应用程序。当我为我签名的 APK 尝试释放密钥哈希时,“应用程序为 Facebook 登录配置错误”错误总是发生在我的设备 HTC One X 中。

keytool -exportcert -alias android -keystore C:\android2012\android.keystore | openssl sha1 -二进制 | openssl base64

我使用上述命令来生成 Release 密钥哈希。别名是“android”。输入密码后成功生成密钥哈希。这个密钥哈希被输入到 Facebook 仪表板,我试图在我签名的 APK 中访问,但它失败了。

任何人都可以帮忙吗?被这个错误困扰了几天。非常感谢!

4

6 回答 6

18

为什么在您测试它时它可以在模拟器甚至设备上运行,因为在从 eclipse 进行测试时,您使用的是debug.keystore而不是您的发布密钥。

遵循以下两种解决方案之一,您应该一切顺利。

解决方案1:

试试这个链接:http ://www.helloandroid.com/tutorials/using-facebook-sdk-android-development-part-1 。我发现使用 Facebook 获取哈希键的方法并不总是像宣传的那样有效。但是,此链接具有获取哈希键的不同方法,并且几乎总是有效。

解决方案2:

话虽如此,我总是发现最简单的事情就是让 Facebook SDK 告诉你你的 Hash Key 是什么。这要简单得多,不应该超过几分钟。

第 1 步:在您的 Facebook SDK 中,找到Util.java类。在那,改变这个:

private static boolean ENABLE_LOG = false;

至:

private static boolean ENABLE_LOG = true;

第 2 步:创建一个的签名 APK,传输到您的设备并安装。如果已经安装,自然会提示。

第 3 步:在您的 DDMS (Logcat) 运行并且您的设备连接到计算机的情况下,运行应用程序并继续寻找密钥不匹配警告。该警告具有实际的哈希键。复制该密钥,转到您的 Facebook 开发人员页面并将新密钥添加到列表中。

于 2012-11-08T05:35:30.703 回答
2

我在这个问题上被困了大约一个星期!我想为我自己的密钥库而不是 debug.keystore 生成哈希密钥。我已经尝试了网络上所有可能的解决方案...

最后我有了一个奇怪的理解:

keytool -exportcert -alias androiddebugkey -keystore [PATH_TO_KEYSTORE]\debug.keystore | [PATH_TO_OPENSSL]\openssl sha1 -binary | [PATH_TO_OPENSSL]\openssl base64

使用这种方法我被要求输入密码并收到一个哈希键(错误的)

此处提出的分三步的第二种方法Facebook Android Generate Key Hash

keytool -exportcert -alias androiddebugkey -keystore [PATH_TO_KEYSTORE]\debug.keystore > [PATH_TO_OPENSSL]\debug.txt [PATH_TO_OPENSSL]\openssl sha1 -binary [PATH_TO_OPENSSL]\debug.txt > [PATH_TO_OPENSSL]\bin\debug_sha.txt [PATH_TO_OPENSSL ]\openssl base64 -in [PATH_TO_OPENSSL]\bin\debug_sha.txt > [PATH_TO_OPENSSL]\bin\debug_base64.txt

使用这种方法,我还被要求输入密码并收到不同的哈希键 = 正确的...

PS把你的别名而不是“androiddebugkey”和你的密钥库而不是“debug.keystore”

于 2012-11-11T22:11:45.570 回答
0

我有这个问题两个月了。我的密钥哈希值一直高达 9。今天我终于找到了简单的解决方案:

步骤1:

在手机上安装从 facebook 开发者页面下载的 facebook sdk。不要安装普通的 facebook 应用程序。确保您可以登录 facebook。然后登出。

第2步:

使用您的最终发布密钥将您的应用导出为 apk,就像您将其上传到 Playstore 时一样。

第 3 步:

通过 USB 数据线或 USB 棒将 Apk 文件放在手机上。

第4步:

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

第 5 步:

启动您的应用程序并尝试使用 facebook 登录。将打开一个对话框并告诉您:“在 facebook 开发人员控制台中找不到密钥

第 6 步:

写下钥匙。

第 7 步:

将其放入您的 facebook 开发者控制台并保存。现在你完成了。下载您的应用程序并使用之前使用的密钥库发布的任何人都可以登录 facebook。

享受

于 2015-01-29T00:30:53.250 回答
0

出现此问题可能是因为我们使用的是“openssl-0.9.8k”版本。尝试使用以下链接中的“openssl-0.9.8e”或“openssl-0.9.8d”不同的版本:

https://code.google.com/p/openssl-for-windows/downloads/list

不会出现这个问题。

于 2013-05-02T11:02:18.463 回答
0

Siddharth 的解决方案 2 有时在 Facebook SDK 3.0 及更高版本中是不可能的。使用以下代码在您的应用程序本身内烘烤正确的密钥哈希。

try {
            PackageInfo info =     getPackageManager().getPackageInfo("com.package.mypackage",     PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.e("MY KEY HASH:", sign);
                Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
            }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

用你的包名替换 com.package.mypackage...

于 2013-08-12T13:20:50.877 回答
0

要获取 openssl 路径,请按照以下步骤操作:

  1. 以 zip 格式下载 Windows 的“openssl”
  2. 在您想要的路径中提取zip。
  3. 获取 zip 中“bin”文件夹的路径

而已

https://sourceforge.net/projects/openssl/files/latest/download

于 2020-06-04T00:52:52.373 回答