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

5
https://developers.facebook.com/docs/android/getting-started/facebook-sdk-for-android/ 网站上,我们展示了如何获取密钥散列值(key hash),但我不知道"keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%.android\debug.keystore | openssl sha1 -binary | openssl base64"这个命令该怎么使用。在网站上我们提到了Java的keytool工具,但我不知道它是什么?请帮助我逐步完成创建Android版Facebook应用程序的过程,谢谢!

1
你是否在 JDK 的 /bin 目录下拥有 keytool 工具? - Raghunandan
谢谢你!但是我尝试打开它,当它打开后1分钟后就自动关闭了。 - Ange Bagui
使用Windows或Linux。您不需要打开,只需执行命令。 - Raghunandan
我正在使用 Windows 7 64 位操作系统。 - Ange Bagui
1
我猜jdk应该在c:\ProgramFiles\Java\jdk1.7.0.07:\bin\keytool下。从命令提示符进入bin目录并执行keytool命令。 - Raghunandan
显示剩余3条评论
5个回答

4
首先检查你的系统是 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


谢谢,我在我的64位电脑上使用了二进制而不是-binary!你救了我,伙计!! - i_o

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)


在终端中,我已经输入了 ***** C:\Program Files\Java\jdk1.7.0_40\bin\keytool.exe -exportcert -alias androiddebugkey -keystore %HOMEPATH%.android\debug.keystore | C:\OpenSSL-Win32\bin\openssl.exe sha1 -binary | C:\OpenSSL-Win32\bin\openssl.exe base64 ***** 但是我看到错误,请帮助我。 - Ange Bagui
你不应该删除路径周围的引号。(请参考我的示例) - ln e

3
请按照以下步骤进行操作: 1. 在命令提示符中设置路径。
    C:\Program Files\Java\jdk1.7.0_03\bin
  1. Then download openssl-0.9.8k_WIN32. Paste it into your C: folder.
  2. Use following command

     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.It will ask for password.put PASSWORD = android

  3. You will get your hashkey. for more info visit: [ http://android-developer-helpdesk.blogspot.com/2014/04/hash-key-generation.html ]

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

1
如果您使用Android Studio作为开发平台,那么获取Facebook的Key Hash将变得很容易。
1:创建一个名为MyApplication.java的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文件中使用了多重dex扩展。如果您使用的是其他名称,请在获取哈希后将其替换为MyApplication.java文件,然后可以使用以前的文件名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接