在https://developers.facebook.com/docs/android/getting-started/facebook-sdk-for-android/我们展示了如何获取密钥哈希,但我不知道我能用“keytool -exportcert -alias androiddebugkey -keystore%HOMEPATH%.android \ debug.keystore | openssl sha1做什么-binary | openssl base64“。在网站上我们谈论Java的keytool实用程序,但我不知道它是什么?请我想为Android创建我的Facebook应用程序我不知道所有这些工作。我需要有人一步一步地帮助我。谢谢你的进步。
答案 0 :(得分:4)
Keytool是Java JDK的一部分。您提到的keytool命令将输出调试密钥的base64,sha1加密表示。每次编译时,您的应用都会使用此调试密钥进行签名。 Facebook使用此密钥来验证您的计算机是否已编译该应用程序。因此,在Facebook Manage App界面中,您可以输入keytool命令的输出。
如果您在运行该命令时遇到问题,则很可能与错误的路径有关。尝试:
"C:\Program Files\Java\jdk1.6.0_33\bin\keytool.exe" -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | "C:\Users\A\Downloads\openssl-0.9.8h-1-bin\bin\openssl.exe" sha1 -binary | "C:\Users\A\Downloads\openssl-0.9.8h-1-bin\bin\openssl.exe" base64
将引号中的路径更改为计算机上openssl.exe和keytool.exe路径的位置。 (您可能必须先下载openssl)
答案 1 :(得分:3)
请按以下步骤操作: 1.在cmd上设置路径。
C:\Program Files\Java\jdk1.7.0_03\bin
使用以下命令
C:\Program Files\Java\jdk1.7.0_03\bin\keytool -export -alias myAlias -keystore
C:\Users\Admin\.android\debug.keystore | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
4.它会要求输入密码。输出PASSWORD = android
答案 2 :(得分:3)
首先检查您的系统是64位还是32位。
如果是32位,则给出以下命令
keytool -export -alias myAlias -keystore C:\Users\monue\.android\debug.keystore | C:\openssl\bin\openssl sha1 -binary | C:\openssl\bin\openssl enc -a -e
如果它是64位,则给出以下命令
"C:\Program Files\Java\jdk1.6.0_33\bin\keytool.exe" -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | "C:\Users\A\Downloads\openssl-0.9.8h-1-bin\bin\openssl.exe" sha1 -binary | "C:\Users\A\Downloads\openssl-0.9.8h-1-bin\bin\openssl.exe"
的base64
答案 3 :(得分:2)
无论是电脑,最简单的方法都是下载(openssl) - (https://code.google.com/p/openssl-for-windows/downloads/list) 并将其放在c驱动器上的新文件夹中,如下所示....例如{C:\ openssl}
现在,在查找发布密钥时,命令提示符应该看起来像这样(只需将位置切换到调试密钥库,反之亦然!
请在粘贴到命令提示符之前删除所有引号...
答案 4 :(得分:1)
如果您使用android studio作为开发平台,那么很容易获得Facebook的Key Hash。
1:创建一个java文件 MyApplication.java 。
2:将以下代码粘贴到其中。
public class MyApplication extends MultiDexApplication {
public void onCreate(){
super.onCreate();
PrintKeyHash();
}
public void PrintKeyHash(){
try{
PackageInfo info = getPackageManager().getPackageInfo("com.bhunnu.nearveg", PackageManager.GET_SIGNATURES);
for (Signature signature: info.signatures){
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("Your System KEYHASH : ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
}catch (PackageManager.NameNotFoundException e){
}catch (NoSuchAlgorithmException e){
}
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
3:现在打开你的清单文件并在应用程序标签中写入android:name =“。MyApplication”。
与 AndroidManifest.xml
中的相同内容 <application
android:allowBackup="true"
android:icon="@drawable/icon1"
android:label="@string/app_name"
android:name=".MyApplication.java"
android:theme="@style/AppTheme">
如果您已使用像android:name =“android.support.multidex.MultiDexApplication”这样的名称,那么也要替换它,因为我在MyApplication.java文件中使用了extends multidexing。
您使用任何名称,而不是在获得Hash后通过MyApplication.java文件替换它,您可以使用以前的文件名。