我已经签署了我的应用并将其导出到我桌面上名为app的文件夹中,该文件夹中的应用程序本身和密钥库。如何找到可以复制到facebook开发者页面的密钥哈希。我有openssl安装,但似乎无法生成密钥哈希我已经在堆栈上尝试了许多其他线程,似乎没有任何帮助,谢谢
詹姆斯
答案 0 :(得分:49)
C:\Users\Selvin\Desktop\selvin.kp
selvin
C:\Program Files\Java\jdk1.6.0_22\bin\keytool.exe
C:\OpenSSL-Win32\bin\openssl.exe
然后,您应该致电:
C:\ Program Files \ Java \ jdk1.6.0_22 \ bin \ keytool.exe“-exportcert -alias selvin -keystore c:\ users \ selvin \ desktop \ selvin.kp | C:\ OpenSSL-Win32 \ bin \ openssl sha1 -binary | C:\ OpenSSL-Win32 \ bin \ openssl base64
用正确的路径替换我的路径和别名。
然后你应该看到:
输入密钥库密码:
输入您的密码,您应该得到以下内容:NfhDlIH7XWJzUZRjL+pZySrMX1Q=
已编辑:NfgDlIG7XWJzUZRUL+bZySrMX1Q=
< - 是一个错误的哈希。或者你很幸运,你的钥匙与
错误:keytool错误:java.lang.Exception:Alias不存在
如果哈希不起作用:
首先,致电
C:\ Program Files \ Java \ jdk1.6.0_22 \ bin \ keytool.exe“-exportcert -alias selvin -keystore c:\ users \ selvin \ desktop \ selvin.kp
输入密码并阅读错误
如果您忘记了别名keytool error: java.lang.Exception: Alias <selvinn> does not exist
,我使用selvinn来显示错误。
有关所有条目/别名的列表:
C:\ Program Files \ Java \ jdk1.6.0_22 \ bin \ keytool.exe -list -keystore c:\ users \ selvin \ desktop \ selvin.kp
第二次修改
答案 1 :(得分:21)
对于那些仍然在苦苦挣扎的人,我发现正确遵循这些步骤肯定会有效,但是第一次正确使用它们会非常具有挑战性,实际上我发现在处理某些别名时有时会对指纹进行base64转换&# 39;不起作用(哈希由于某种原因被截断)。我已经编写了各种批处理文件,这些批处理文件已经提到了大部分已经提到的说明,所以我不排除那里的问题。
然而,基本上大多数人都处于openssl阶段(要么找不到它,要么不知道如何使用它,或者Windows管道没有正确链接SHA1的输出)导出到base64转换输入)。
要解决此问题,您可以使用可能更容易理解的替代方法。基本上facebook API需要的是用于指纹APK的SHA1哈希的base64表示(编码)。为此,您只需列出密钥库:
"C:\Program Files\Java\JRE6\Bin\keytool.exe" -list -v -keystore "Path-to-your-keystore" -storepass "KeystorePassword" > somefile.txt
显然,您需要根据自己的设置更改keytool可执行文件的路径,并替换&#34; Path-to-your-keystore&#34;和&#34; KeystorePassword&#34;用你的密钥库路径和密码!结果应该是创建一个文件&#34; sometext.txt&#34;在当前文件夹中,您可以在任何文本编辑器中打开它。该文本文件将列出所有密钥库别名&#39;它们各自的MD5和SHA1哈希为十六进制字符串。
现在只需找到用于对APK进行签名的别名,复制SHA1哈希,并使用任何在线十六进制到base64转换器将其转换为facebook所需的base64编码格式。您可以通过谷歌搜索&#34;在线十六进制到base64转换器&#34;找到一个在线转换器。我一直在使用this one,因为您可以将文本文件中的字符串直接复制并粘贴到提供的框中,它只会删除分隔每个十六进制字节的冒号。
最后一点(有点明显但是......)只复制并粘贴十六进制字符串而不是SHA1:前缀!
希望这有助于某人;它肯定对我有用!
答案 2 :(得分:14)
首先,我要感谢Selvin!
这个答案几乎与Selvin的答案完全相同,但它仍然需要3个小时才能让它起作用:P所以为真正的新手提供了更多的教程
如何从密钥库中获取hashKey
location keytool C:\ Program Files(x86)\ Java \ jdk1.xxx)\ bin \ keytool location openssl C:\ OpenSSL-Win32 \ bin \ OpenSSL location(debug)keystore C:\ Users [usernamepc] .android \ debug.keystore
在Windows中打开cmd(start-&gt; run-&gt; cmd)并导航到keytool位置 或复制粘贴以下字符串,请注意您不能使用ctrl + v但是鼠标右键单击
cd c:\program files (x86)\java\jdk1.7.0_01\bin
当在右侧目录中将此字符串粘贴到cmd行中时:
keytool.exe -exportcert -alias androiddebugkey -keystore c:\users\charx\.android\debug.keystore | C:\OpenSSL-Win32\bin\openssl sha1 -binary | C:\OpenSSL-Win32\bin\openssl base64
“C:\ OpenSSL-Win32 \ bin \ openssl”是opensssl.exe的路径,用openssl.exe的路径替换它
请确保您更改了电脑名称的[usernamepc],正如您在我的情况下所看到的那样,它是charx。此外,java jdk xxxx的目录取决于您的版本。
cmd应显示hashkey
我的调试文件的哈希键是
h1GdQbgB8b/liCG+acmZWkgIRHA=
答案 3 :(得分:9)
Eclipse的解决方案(对于像我这样的懒人)。
选择Eclipse中的任何项目,导出 - Android应用程序,输入密钥传递等,在底部的最后一页,您将看到 MD5:.... SHA1:....
复制SHA1字符串并将其粘贴到任何HEX-Base64在线转换器中(例如这一个:http://tomeko.net/online_tools/hex_to_base64.php)
恭喜!您已获得Facebook Dev Console所需的密钥哈希值。
答案 4 :(得分:4)
上面提到的解决方案由于某种原因对我不起作用,但我能够成功生成keyhash。我正在编写10个最简单的步骤来获取已签名的apk [apk用密钥库签名] 的键盘:
将以下代码复制到activity [start Activity]
。此代码应包含在您的活动中,以便在签名的apk活动开始时提取正确的密钥。
private void getHashKey() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("MY_KEY_HASH:",
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
} }
您的AndroidManifest.xml
文件应在其应用标记中包含android:allowBackup="true"
属性。
导出已签名的apk并在手机中安装该应用,然后以usb debugging on
的调试模式连接手机。
然后转到sdk\platform-tools
打开命令提示符并键入adb devices
以查看您的设备是否已连接。如果设备未列出,则在继续下一步之前尝试解决该问题。
然后输入adb logcat >"log.txt"
。您的cmd
屏幕会被绞死。
别恐慌。完整正常,因为整个logcat被写入log.txt
。
运行您的应用,希望您认为getHashKey()
执行函数,然后在命令提示符下按ctrl+c
结束日志文件写入。
现在,命令提示符将再次响应。现在进入
你的sdk\platform-tools
目录,你会看到一个log.txt文件
已创建包含日志。
现在在texteditor
中打开它并搜索MY_KEY_HASH:
“-----------您的密钥显示-------”
FB account
或您需要的地方,然后进行另一个版本,其中android:allowBackup="false"
和getHashKey()
功能是
除去。希望这有助于每个人:)
答案 5 :(得分:3)
我不能为这一切烦恼我看到facebook sdk实际发送的是什么 使用临时代码导出我签名的应用程序以显示facebook error.toString() 在授权中,它给哈希键找我,然后把它放在我的脸谱App和宾果游戏中!
答案 6 :(得分:0)
如果您使用alies,请使用此命令查找密钥库alies
keytool -list -v -keystore keystore.jks | findstr&#34; Alias Creation&#34;