为Android中的Facebook应用生成密钥哈希

时间:2013-10-27 14:43:17

标签: android facebook hash

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 个答案:

答案 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
  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.它会要求输入密码。输出PASSWORD = android

  3. 你会得到你的哈希钥匙。 欲了解更多信息,请访 [http://android-developer-helpdesk.blogspot.com/2014/04/hash-key-generation.html]

答案 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}

现在,在查找发布密钥时,命令提示符应该看起来像这样(只需将位置切换到调试密钥库,反之亦然!

请在粘贴到命令提示符之前删除所有引号...

keytool -exportcert -alias“密钥库的名称在这里”-keystore“位置,你的密钥库文件是”| C:\ openssl \ bin \ openssl.exe sha1 -binary | C:\ openssl \ bin \ openssl.exe base64

答案 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文件替换它,您可以使用以前的文件名。