Facebook密钥哈希,Android密钥库混淆

6

keytool -exportcert -alias mykeystore -keystore mykeystore| openssl sha1 -binary | openssl base64

你好,我正在使用上述命令生成我的Facebook密钥哈希。它会要求我输入密码并给出一个密钥哈希。我将此密钥哈希放入Facebook应用程序设置中,但它不能为我的已签名的Android应用程序工作。
在调试Android应用程序时,我看到控制台消息说它无法识别“android key hash blahblahblah”,因此我将“blahblahblah”复制到了Facebook应用程序中,这样可以在调试模式下使用Facebook。但显然,那只是针对调试密钥库的情况。现在对于实际密钥库生成的密钥哈希仍然是错误的,因此生产版本的我的应用程序将无法使用Facebook API。
关于我的密钥库的一件事是它是在eclipse中创建的。它是一个密钥库,里面有两个密钥。我注意到Eclipse密钥库和命令行密钥库不同,并且它们不兼容以进行签名。但我已经发布了我的应用程序的一个版本,因此必须使用我已经使用的密钥。
感谢您的帮助。
3个回答

5

使用 keytool -list 命令来列出你所拥有的别名。如果不确定用哪个别名签署了发布的 APK,可以尝试两个。其中一个应该有效。


你能给我完整的命令吗?我执行了 keytool -list -keystore mykeystore,它要求输入我的密码,然后显示了证书指纹,格式为 Certificate fingerprint (MD5): 2B:43:D7:57:.........,这不是 Facebook 要求的哈希格式。我该如何列出别名或其他内容,不确定如何继续操作。 - CQM
2
使用 keytool -list -v -keystore 列出别名(检查“别名名称:…”行),然后将原始命令中的别名替换为它们。 - Nikolay Elenkov

1
我曾经遇到同样的问题 - 调试哈希密钥可以工作,但生产密钥无法工作。最终,我安装了一个不同于最初安装的OpenSSL源,重新创建了哈希密钥,问题得到解决。这是我找到可用的OpenSSL的网站: http://gnuwin32.sourceforge.net/packages/openssl.htm

兄弟,你真是救星啊。其他所有的帖子都是关于如何签名的。我已经做过了,所以我有点绝望了,因为我已经部署到GooglePlay上了,我的一些测试人员开始变得不友好了。当我看到你的评论时,我立刻跟随你的链接,并使用了那个版本的OPENSSL。 - Krafty

0
如果在Windows上运行Cygwin,请使用cygpath查找密钥库:
keytool -exportcert -alias androiddebugkey -keystore $(cygpath -aw ~/.android/debug.keystore) | openssl sha1 -binary | openssl base64    Keystore-Kennwort eingeben:  android

如果使用 /cygpath/c/Users/name/...,它将无法工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接