我完全不明白这个过程。我已经能够导航到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%肯定这个链接会帮助你
其他回答
Windows:
打开命令提示符并粘贴下面的命令
键盘出口,又名仙女座键盘 HOMEPATH % \调试机器人。keystore | openssl sha1 -binary | openssl base64
输入密码:android——>按Enter键 用你的开发者账号登录Facebook 去你的Facebook应用程序>设置>粘贴哈希键在“键哈希”选项>保存更改。 现在用Facebook登录/分享等测试你的android应用。
也有一个简单的解决方案。在你的应用中运行这个:
FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));
一个不需要FB SDK(基于这里的解决方案)的较长的例子:
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);
}
}
结果应该以“=”结尾。
this will help newbees also. just adding more details to @coder_For_Life22's answer. if this answer helps you don't forget to upvote. it motivates us. for this you must already know the path of the app's keystore file and password for this example consider the key is stored at "c:\keystorekey\new.jks" 1. open this page https://code.google.com/archive/p/openssl-for-windows/downloads 2. download 32 or 64 bit zip file as per your windows OS. 3. extract the downloaded file where ever you want and remember the path. 4. for this example we consider that you have extracted the folder in download folder. so the file address will be "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe"; 5. now on keyboard press windows+r button. 6. this will open run box. 7. type cmd and press Ctrl+Shift+Enter. 8. this will open command prompt as administrator. 9. here navigate to java's bin folder: if you use jre provided by Android Studio you will find the path as follows: a. open android studio. b. file->project structure c. in the left pane, click 'SDK location' d. in the right pane, below 'JDK location' is your jre path. e. add "\bin" at the end of this path as the file "keytool.exe", we need, is inside this folder. for this example i consider, you have installed java separately and following is the path "C:\Program Files\Java\jre-10.0.2\bin" if you have installed 32bit java it will be in "C:\Program Files (x86)\Java\jre-10.0.2\bin" 10. now with above paths execute command as following:
keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
您将被要求输入密码,请输入您在创建密钥存储库密钥时所提供的密码。 ! ! 这将给你钥匙
错误: 如果你得到: --- 'keytool'不能被识别为内部或外部命令 --- 这意味着Java安装在其他地方。
你可以从https://console.developers.google.com/projectselector/apis/credentials上获得你所有的指纹 然后使用下面的Kotlin代码将其转换为keyhash:
fun main(args: Array<String>) {
listOf("<your_production_sha1_fingerprint>",
"<your_debug1_sha1_fingerprint>",
"<your_debug2_sha1_fingerprint>")
.map { it.split(":") }
.map { it.map { it.toInt(16).toByte() }.toByteArray() }
.map { String(Base64.getEncoder().encode(it)) }
.forEach { println(it) }
}
只需在OnCreateView或OnStart活动中运行此代码,此函数返回您的开发键散列。
private String generateKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = (MessageDigest.getInstance("SHA"));
md.update(signature.toByteArray());
return new String(Base64.encode(md.digest(), 0));
}
}catch (Exception e) {
Log.e("exception", e.toString());
}
return "key hash not found";
}
推荐文章
- 什么是“android. r.b ayout.simple_list_item_1”?
- 将字符串转换为Uri
- 在Android中创建临时文件
- INSTALL_PARSE_FAILED_NO_CERTIFICATES错误是什么?
- 在Android中定义RelativeLayout视图的Z顺序
- jUnit中的字符串上的AssertContains
- 将JSON转换为映射
- Android Studio 3.0口味维度问题
- 在Java8中使用lambda仅在不为空时筛选值
- Java反射中的getFields和getDeclaredFields有什么区别
- 这个谷歌播放APK发布错误消息是什么意思?
- 如何检查一个文件夹是否存在?
- 如何创建在移动设备上呼叫电话号码的超链接?
- 错误:无法在intelliJ IDE中找到或加载主类
- 如何创建Android Facebook密钥哈希?