我完全不明白这个过程。我已经能够导航到Java SDK中包含keytool的文件夹。虽然我一直得到错误openssl不识别为内部或外部命令。问题是,即使我能让它工作,我该做什么,然后做什么?
当前回答
步骤1->在您的系统中打开CMD
步骤2->C:\程序文件\Java\jdk1.6.0_43\bin>
步骤3->keytool -list -v -keystore C:\Users\leon\.android\debug. exeKeystore -alias androiddebugkey -storepass android -keypass android
你得到SHA1值点击这个链接你转换你的SHA1值为哈希键
我100%肯定这个链接会帮助你
其他回答
Linux和Mac
开放式终端:
用于调试构建
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
你会发现调试。中的密钥存储库。android”文件夹。复制并粘贴到桌面上,然后运行上面的命令。
发布版本
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
注意:确保在这两种情况下它都要求输入密码。如果它不要求输入密码,则意味着命令中有错误。调试密码。密钥存储库是“android”,为了发布,您必须输入您在创建密钥存储库时设置的密码。
请试试这个,它对我有用:
fun Context.generateSignKeyHash(): String {
try {
val info = packageManager.getPackageInfo(
packageName,
PackageManager.GET_SIGNATURES
)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
return Base64.encodeToString(md.digest(), Base64.DEFAULT)
}
} catch (e: Exception) {
Log.e("keyHash", e.message.toString())
}
return ""
}
OpenSSL:如果你的操作系统没有预安装OpenSSL(例如Windows没有预安装),你就必须安装它。如何安装取决于您的操作系统(对于Windows,请查看coder_For_Life22提供的链接)。
最简单的方法是将openssl.exe二进制文件复制到您的keytool路径(如果您使用的是Windows)。如果不想这样做,则必须将其添加到PATH环境变量中。然后执行文档中提供的命令。
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
注意-keystore后面的参数指向调试密钥库。这个位置也取决于您的操作系统。应位于下列地点之一:
Windows Vista或7 - C:\Users\.android\debug.keystore Windows XP - C:\Documents and Settings\.android\ debug.keystore OS X和Linux - ~/.android/debug.keystore
如果所有操作都正确,系统将提示您输入密码。这是用于调试证书的android。如果密码正确,控制台将输出一个散列(有些随机字符和数字)。
把它复制到android键哈希字段内的首选项你的应用程序在facebook上。要做到这一点,请访问developers.facebook.com/apps,选择你的应用程序,进入编辑设置,向下滚动。之后,等待几分钟,直到更改生效。
以下是你需要做的
从代码下载openSSl 提取它。在C:/目录下创建一个名为OpenSSL的文件夹,并将解压后的代码复制到这里。
检测调试。Keystore文件路径。如果你没有找到,那么在C:/中进行搜索,并在下一步中使用命令中的Path。
检测您的keytool.exe路径,并进入dir/ in命令提示符,并在一行中运行此命令
$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64
它会要求输入密码,输入android 这是所有。你会得到一个key-hash
在你的应用程序中运行:
FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");
或:
public static void printHashKey(Context context) {
try {
final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for (android.content.pm.Signature signature : info.signatures) {
final MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
final String hashKey = new String(Base64.encode(md.digest(), 0));
Log.i("AppLog", "key:" + hashKey + "=");
}
} catch (Exception e) {
Log.e("AppLog", "error:", e);
}
}
然后看看日志。
结果应该以“=”结尾。
解是基于这里和这里。
推荐文章
- 在Java中转换float为String和String为float
- Android模拟器没有启动,显示“无效的命令行参数”
- 将double类型转换为字符串
- Android防止双击按钮
- 在Android上理解颜色(6个字符)
- Java关联数组
- Restful API服务
- 我如何处理ImeOptions的完成按钮点击?
- 将所有非字母数字字符替换为空字符串
- 漂亮地打印Java集合(toString不返回漂亮输出)
- 静态嵌套类在Java,为什么?
- 如何防止Eclipse在启动时挂起?
- 模块是用不兼容的Kotlin版本编译的。其元数据的二进制版本为1.5.1,预期版本为1.1.15
- Optional和Optional的区别是什么?flatMap和Optional.map?
- 如何在Android工作室添加“libs”文件夹?