在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 应用程序,我不知道这一切是如何工作的。我需要有人一步一步地帮助我。谢谢你提前。
5 回答
Keytool 是 Java JDK 的一部分。您提到的 keytool 命令将输出您的调试密钥的 base64、sha1 加密表示。每次编译您的应用程序时,都会使用此调试密钥对其进行签名。Facebook 使用此密钥来验证您的计算机是否编译了该应用程序。因此,在 Facebook 管理应用程序界面中,您将放置 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. 在您的 cmd 上设置路径。
C:\Program Files\Java\jdk1.7.0_03\bin
- 然后下载openssl-0.9.8k_WIN32。将其粘贴到您的 C: 文件夹中。
使用以下命令
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.它会要求输入密码。put PASSWORD = android
- 你会得到你的哈希键。欲了解更多信息,请访问:[ http://android-developer-helpdesk.blogspot.com/2014/04/hash-key-generation.html ]
首先检查你的系统是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
无论使用哪种计算机,最简单的方法就是下载 (openssl) - ( https://code.google.com/p/openssl-for-windows/downloads/list ) 并将其放在一个新文件夹中像这样的 c 驱动器.... 示例 {C:\openssl}
现在,在查找发布密钥时,您的命令提示符应该看起来像这样(只需将位置切换到调试密钥库,反之亦然!
请在粘贴到命令提示符之前删除所有引号...
keytool -exportcert -alias "您的密钥库的名称在此处" -keystore "您的密钥库文件所在的位置" | C:\openssl\bin\openssl.exe sha1 -binary | C:\openssl\bin\openssl.exe base64
如果您使用 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 文件中使用了扩展多索引。
您正在使用任何名称,而不是在到达 Hash 后将其替换为 MyApplication.java 文件,您可以使用以前的文件名。