Facebook Android SDK的密钥哈希

And*_*ers 44 java android keystore keytool

我无法弄清楚如何获得使用Facebook Android SDK所需的Key Hash.我发现我可以使用keytool这些命令:

  keytool -exportcert -alias [alias]
 -keystore [keystore] | openssl sha1 -binary | openssl enc -a -e
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我不知道在哪里插入这个,我尝试通过命令窗口(win7),我尝试打开文件keytool.exe.

小智 27

您可以从此处安装Open SSL ,这将使您的命令工作

  • 对于其他人:如果将keytool和OpenSSL文件保存在同一文件夹中,则会更简单. (2认同)
  • 是的,只需复制jdk1.x.0文件夹中openssl存档的内容即可 (2认同)

pet*_*ejl 20

我创建了一个批处理脚本facebookkeydebug.bat,它返回所需的Facebook密钥哈希值.只需编辑脚本,设置正确的路径,密钥库名称并运行它.

:: Getting Android key hash for Facebook app on Windows
:: Requirement: OpenSSL for Windows (http://code.google.com/p/openssl-for-windows/downloads/list)
:: Usage: set paths and run facebookkeydebug.bat

@echo Exporting keystore cert
keytool -exportcert -alias androiddebugkey -keystore C:\Users\myusername\.android\debug.keystore -storepass android -keypass android > debug.keystore.bin

@echo Converting to sha1
C:\PROGRAMS\openssl-0.9.8k_X64\bin\openssl sha1 -binary debug.keystore.bin > debug.keystore.sha1

@echo Converting to base64
C:\PROGRAMS\openssl-0.9.8k_X64\bin\openssl base64 -in debug.keystore.sha1 -out debug.keystore.base64

@echo Done, Android hash key for Facebook app is:
C:\PROGRAMS\openssl-0.9.8k_X64\bin\openssl base64 -in debug.keystore.sha1
@pause
Run Code Online (Sandbox Code Playgroud)

编辑:我发布了一个带有一些批处理脚本的repo,用于在Windows上签名和获取证书密钥:https://github.com/petrnohejl/Android-Scripts


小智 18

  1. http://slproweb.com/products/Win32OpenSSL.html下载并安装基于Windows 32或64位的OpenSSL .(注意:也可以从该站点下载并安装第一个可重新编译的Visual C++ 208)
  2. 将已安装的OpenSSL的bin目录放在windows路径中.
  3. 打开命令提示符并转到C:\ Users {User_Name} .android
  4. 现在把这个命令放在cmd" keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64 ".(参考https://developers.facebook.com/docs/android/getting-started#samples)
  5. 现在输入密码"facebook"没有双引号.
  6. 现在将生成一个哈希键 在此输入图像描述
  7. 最后去Facebook开发者网站.确保您已登录Facebook,并使用右上角的下拉菜单转到"开发者设置":
  8. 进入开发人员设置后,从左侧导航栏中选择"示例应用程序",然后将密钥哈希添加并保存到您的个人资料中: 在此输入图像描述


Rud*_*udi 15

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

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());
  }
Run Code Online (Sandbox Code Playgroud)

参考:

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

  • 这个与keytool代码生成的密钥不同,密码为"android".为什么? (2认同)

小智 8

为了方便起见 -

keytool.exe -list -alias androiddebugkey -keystore debug.keystore -v
Run Code Online (Sandbox Code Playgroud)

这应该为您提供所需的指纹,而无需安装openssl的麻烦.

例如

Certificate fingerprints:
         MD5:  1A:5E:AA:CB:1A:CF:68:F0:8B:DA:D8:BC:EE:4F:BF:EE
         SHA1: D2:89:D1:5A:BC:F8:E3:E5:62:4D:DD:20:DD:96:CD:AB:51:A1:C1:7F
         Signature algorithm name: SHA1withRSA
         Version: 3
Run Code Online (Sandbox Code Playgroud)

  • 但这里我们需要的是Key hash而不是指纹. (2认同)