5

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 应用程序,我不知道这一切是如何工作的。我需要有人一步一步地帮助我。谢谢你提前。

4

5 回答 5

4

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)

于 2013-10-27T14:56:00.597 回答
3

请按照下列步骤操作: 1. 在您的 cmd 上设置路径。

    C:\Program Files\Java\jdk1.7.0_03\bin
  1. 然后下载openssl-0.9.8k_WIN32。将其粘贴到您的 C: 文件夹中。
  2. 使用以下命令

     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

  3. 你会得到你的哈希键。欲了解更多信息,请访问:[ http://android-developer-helpdesk.blogspot.com/2014/04/hash-key-generation.html ]
于 2014-04-03T10:27:27.330 回答
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

于 2014-10-28T07:46:00.297 回答
2

无论使用哪种计算机,最简单的方法就是下载 (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

于 2015-07-24T18:30:22.783 回答
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 文件中使用了扩展多索引。

您正在使用任何名称,而不是在到达 Hash 后将其替换为 MyApplication.java 文件,您可以使用以前的文件名。

于 2016-09-24T08:52:33.283 回答