Android - 获取Facebook集成的哈希密钥

时间:2011-02-16 11:14:27

标签: java android facebook sdk keystore

我正在尝试将Facebook应用到我的应用程序中以允许将内容发送到用户的墙上,更新状态等等。

所以下载后我被告知要使用密钥库文件获取密钥。我决定勇敢并创建自己的密钥库文件(稍后发布)并成功完成。

创建文件后虽然我遇到了各种问题,试图从中恢复密钥,但是我通过keytool /命令提示符输入了命令,并且它询问了我的密钥库密码......

输入我首先设置的密码后,我只得到了ascii符号和字母以及我的密钥库详细信息。出了什么问题?

更新: 好的,我知道您可能需要使用OpenSSL才能正确显示文本。我已经安装了OpenSSL但是如何使用它来获取Hash代码?

4 个答案:

答案 0 :(得分:4)

  1. http://code.google.com/p/openssl-for-windows/downloads/list

  2. 下载Openssl
  3. 在C盘中创建一个openssl文件夹

  4. 将Zip文件解压缩到openssl文件夹

  5. 检查keytool可执行文件所在的目录是否在您的路径中。 (例如,在我的Windows 7机器上,它位于C:\ Program Files(x86)\ Java \ jre6 \ bin中。)
  6. 打开cmd并粘贴:

    keytool -exportcert -alias androiddebugkey -keystore~ / .android / debug.keystore | C:\ openssl \ bin \ openssl sha1 -binary | C:\ openssl \ bin \ openssl base64

  7. 如果需要输入密码android 你收到你的哈希码

答案 1 :(得分:3)

我总是在Linux下使用这种方法,因为它以原始方式失败:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore > key.out
cat key.out | openssl sha1 -binary > key.bin
cat key.bin | openssl base64

您将获得进入页面移动设备,Facebook apllication的android部分所需的密钥。每次使用不同的键槽来签署您的应用程序时,您还需要更改Facebook页面上的键。

答案 2 :(得分:0)

最好的方法。

*尝试{         PackageInfo info = getPackageManager()。getPackageInfo(                 “你的包名”,                 PackageManager.GET_SIGNATURES);         for(签名签名:info.signatures){             MessageDigest md = MessageDigest.getInstance(“SHA”);             md.update(signature.toByteArray());             Log.d(“你的标签”,Base64.encodeToString(md.digest(),Base64.DEFAULT));             }     } catch(NameNotFoundException e){} catch(NoSuchAlgorithmException e){ } *

有时候openssl会提供错误的keyhash。

答案 3 :(得分:0)

您可以使用以下代码获取哈希键:

try {

   PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);

   for (Signature signature : info.signatures) 
   {
    MessageDigest md = MessageDigest.getInstance("SHA");
    md.update(signature.toByteArray());
    Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
   }

  } catch (NameNotFoundException e) {
   Log.e("name not found", e.toString());
  } catch (NoSuchAlgorithmException e) {
   Log.e("no such an algorithm", e.toString());
  }

参考:

http://limbaniandroid.blogspot.com/2013/04/how-to-get-hash-key-for-integarte.html