Facebook的Android生成密钥哈希

试图创build一个与Facebook集成的Android应用程序,我已经到了你必须生成一个关键的散列文件的文档的一部分,它指定运行下面的代码

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

当我在terminal运行这个时,我得到一个密钥库被篡改或密码错误的错误,

我只是想生成我的密钥哈希值

任何人都可以指向正确的方向吗?

删除〜/ .android / debug.keystore下的debugging证书(在Linux和Mac OS X上); 该目录是类似于Windows上的%USERHOME%/。android。

然后,Eclipse插件应该在下次尝试构builddebugging包时生成新的证书。

让我知道这是否有效。

为了生成密钥哈希,你需要遵循一些简单的步骤。

1)从这里下载Openssl 。

2)在C盘中创build一个openssl文件夹

3)将Zip文件解压到C 盘中创build的openssl文件夹中。

4)从我的案例(C:\ Users \ SYSTEM.android)中的.android文件夹复制文件debug.keystore并粘贴到我的案例(C:\ Program Files \ Java \ jdk1.6.0_05 \ bin)中的JDK bin文件夹中。

5) 打开命令提示符,并提供JDK Bin文件夹path(C:\ Program Files \ Java \ jdk1.6.0_05 \ bin)。

6)复制下面的代码,并回车

keytool -exportcert -alias androiddebugkey -keystore debug.keystore> c:\ openssl \ bin \ debug.txt

7)现在你需要input密码 ,密码= android。

8)如果你在openssl Bin文件夹中看到,你会得到一个名为debug.txt的文件

9)现在,您可以重新启动命令提示符或使用现有的命令提示符

10)回到C盘并给出openssl Bin文件夹的path

11)复制下面的代码并粘贴

openssl sha1 -binary debug.txt> debug_sha.txt

12)你将在openssl bin文件夹中得到debug_sha.txt

13)再次复制下面的代码并粘贴

openssl base64 -in debug_sha.txt> debug_base64.txt

14)你将在openssl bin文件夹中得到debug_base64.txt

15)打开debug_base64.txt文件这里是你的密钥哈希。

更新的答案(通过代码生成)更简单的方法:

根据我的经验,openssl总是很麻烦,我尝试了facebookbuild议的第二种方法。 而且太棒了。 这是获得散列键的最好方法。

第二个选项是打印出发送给Facebook的密钥哈希值并使用该值。 对主要活动中的onCreate()方法进行以下更改:

  @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { PackageInfo info = getPackageManager().getPackageInfo( "com.facebook.samples.loginhowto", 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) { } catch (NoSuchAlgorithmException e) { } ...other operations }//end of onCreate 

将com.facebook.samples.loginhowtoreplace为您自己的软件包名称(Manifest.xml中的软件包名称)。

官方链接 – https://developers.facebook.com/docs/android/login-with-facebook/ (见页面底部)

老解答(使用openssl生成Keyhash)

  1. 生成签名,你需要在你的电脑上安装openssl。 如果你没有从这里下载openssl
  2. 在C:中,创buildopenssl文件夹
  3. 将下载的openssl zip文件的内容解压到C:盘的openssl文件夹中
  4. 打开命令提示符
  5. 在命令提示符下移动到openssl bin ,即C:\openssl\bin
  6. 运行以下命令来生成你的keyhash。 在生成hashkey时,它应该询问你的密码。

    keytool -exportcert -alias androiddebugkey -keystore“C:\ Users \ Anhsirk.android \ debug.keystore”| openssl sha1 -binary | openssl base64

注意 :在上面的代码注意到,你需要给你的path给用户 (即在我的情况下,它是C:\用户\ Anhsirk,你只需要改变你的用户帐户。

将密码设为android

。 如果它不要求密码,你的密钥库path是不正确的。

如果一切正常,它应该给你下面的hashkey。

在这里输入图像描述

正确的密钥可以从应用程序本身获得,通过添加下面的代码来烘烤正确的密钥散列(在Facebook SDK 3.0以上的情况下,这是可行的)

 try { PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT); Log.e("MY KEY HASH:", sign); Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show(); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

用你的包名replacecom.package.mypackage

I.为Facebook创build密钥哈希debugging

添加代码以打印出Facebook的密钥哈希

  try { PackageInfo info = getPackageManager().getPackageInfo( "com.google.shoppingvn", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

II。 为Facebook创build密钥哈希版本

  1. 下载openssl-0.9.8e_X64
  2. 在C盘中创build一个openssl文件夹
  3. 将Zip文件解压缩到openssl文件夹中
  4. 开始 – >运行:cmd(按回车)
  5. (按)cd C:\ Program Files \ Java \ jdk1.6.0_45 \ bin。 注意:C:\ Program Files \ Java \ jdk1.6.0_45 \ bin:是您电脑中jdk文件夹的path
  6. (按)keytool -exportcert -alias gci -keystore D:\ folder \ keystorerelease | C:\ openssl \ bin \ openssl sha1 -binary | C:\ openssl \ bin \ openssl base64。 注意:D:\ folder \ keystorerelease:是您的密钥存储的path

  7. input密钥库密码:这是注册密钥存储时的密码。

    然后你将有一个关键的哈希:jDehABCDIQEDWAYz5Ow4sjsxLSw =

  8. loginFacebook。 访问pipe理应用程序。 将密钥哈希粘贴到developers.facebook.com上的应用程序

对于这个问题,最简单的解决scheme是:

我现在有这个问题已经两个月了。 我的关键哈希值已经达到了9.今天,我终于find了简单的解决scheme:

步骤1:

安装您从手机上的Facebook开发者页面下载的Facebook sdk。 不要安装正常的Facebook应用程序。 确保你可以login到Facebook。 然后注销。

第2步:

导出您的应用程序与您的最终版本密钥作为apk,就像你上传到游戏存储时一样。

第3步:

通过USB电缆或USB棒将Apk文件放在手机上。

步骤4:

使用文件pipe理器安装您的应用程序: 示例

第5步:

启动您的应用程序,并尝试使用Facebooklogin。 一个对话框将打开并告诉你:“在Facebook开发者控制台中没有find钥匙YOURHASHKEY”

步骤6:

记下钥匙。

STEP 7:

把它放到你的Facebook开发者控制台并保存。 现在你完成了。 任何下载您的应用程序,与早期使用的密钥库发布可以login到Facebook。

请享用

如果您要发布,请使用您用来导出应用程序的密钥库,而不是debug.keystore。

debugging证书的密码是android而不是Android

最后 :)

这里我的故事:

  1. 在设置布局之后,将此代码添加到主要活动中。

     try { PackageInfo info = getPackageManager().getPackageInfo("PROJECTNAME", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT); Log.e("MY KEY HASH:", sign); //textInstructionsOrLink = (TextView)findViewById(R.id.textstring); //textInstructionsOrLink.setText(sign); Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show(); } } catch (NameNotFoundException e) { Log.d("nope","nope"); } catch (NoSuchAlgorithmException e) { } 
  2. 将PROJECTNAME更改为您的软件包名称!

  3. 签署您的应用程序(Android工具 – >导出签名的应用程序)
  4. 在你粘贴2选项代码的主要活动中,在你的布局中使用id textstring创buildTextView
  5. 取消注释两行,你的标志码将被设置为TextView 6 Wuolia,你有你的HASH,在手机上安装应用程序! 并检查你的哈希键!
  6. 现在,当它是可见的,去你创build的Facebook应用程序,并将其添加到[密钥哈希]
  7. 请注意,您的软件包名称应与[密钥哈希]下的Facebook [软件包名称]
  8. 祝你今天愉快 :)

为了生成释放键哈希,你需要遵循一些简单的步骤。

1)下载Openssl

2)在C盘中创build一个openssl文件夹

3)将Zip文件解压到C盘中创build的openssl文件夹中。

4)从我的案例(C:\ Users \ SYSTEM.android)中的.android文件夹复制文件debug.keystore并粘贴到我的案例(C:\ Program Files \ Java \ jdk1.6.0_05 \ bin)中的JDK bin文件夹中。

5)打开命令提示符,在我的情况下给出JDK Bin文件夹的path(C:\ Program Files \ Java \ jdk1.7.0_40 \ bin)。

6)复制下面的代码,并回车

keytool -exportcert -alias abcd -keystore D:\ Projects \ MyAppFolder \ keystore.txt | C:\ openssl \ bin \ openssl sha1 – binary | C:\ openssl \ bin \ openssl base64 ex – keytool -exportcert -alias(你的sing apk别名在这里input像我的符号apk阿里安的名字是abcd)-keystore“签名apk生成密钥库apth在这里input” “openssl bin文件夹path在这里input”sha1 – binary | “openssl bin文件夹path在这里input”base64

7)现在你需要input密码,密码=(在这里input你的密码钥匙密码)

8)你有用于释放应用程序密钥哈希的密钥库

为Facebook生成一行解决scheme

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

尽pipe这个主题很老,但我想分享我的经验(最近开始使用Facebook),这在我看来是笔直的:

  1. 从以下链接下载openssl: https : //code.google.com/p/openssl-for-windows/downloads/list
  2. 将其解压缩到本地驱动器(例如,C:\ openssl)
  3. 要获得Facebook集成的开发密钥,请在Windows的命令行中使用以下命令:

    keytool -exportcert -alias androiddebugkey -keystore%HOMEPATH%.android \ debug.keystore | “C:\ openssl \ bin \ openssl.exe”sha1 -binary | “C:\ openssl \ bin \ openssl.exe”base64

注意!请用您自己的安装pathreplaceopenssl.exe的path(在本例中为“C:\ openssl \ bin \ openssl.exe”)。

  1. 它会提示input密码,例如,

input密钥库密码:android

如上所示键入android作为密码。

而已! 你会得到一个28个字符的长键。 干杯!

使用相同的过程获取释放键。 只需将该命令replace为以下内容并使用您的释放键别名即可。

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | “openssl.exe的path”sha1 -binary | openssl base64

关于这个问题的博客文章很棒

从.p12键提取密钥散列

  1. 打开terminal或命令行并导航到您的.p12密钥的位置。
  2. 键入:“keytool -v -list -keystore mycert.p12 -storetype pkcs12”其中mycert.p12是.p12键的文件名。
  3. input密钥库密码(导出.p12密钥时使用的密码)。 4。 复制sha1指纹签名字节文本。
  4. 需要sha1指纹签名的字节来写入“sha1.bin”文件。 您可以使用hex编辑器粘贴您复制的字节。 之后,将文件保存为“sha1.bin”。
  5. 再次打开terminal,input:“openssl base64 -in sha1.bin -out base64.txt”。
  6. 生成的“base64.txt”将包含Facebook所需的密钥哈希。

伟大而简单的hex编辑器mac:HexFiend

OpenSSL应该预装在Mac上,这里是Windows版本的链接。

链接

尝试传递密钥的密码并将其存储为命令的一部分

 keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -keypass android -storepass android \ | openssl sha1 -binary \ | openssl base64 

我可以用这里的一些解决scheme来完成所要求的任务,但是对我自己来说,那个笨蛋……那么为什么不写一个小的Java代码来做这件事,然后把它装进一个jar子里,所以我就这样做了。 ..

下载 Jar的链接

在Windows 8上工作…没有尝试任何其他操作系统。

大家好,我的故事如何签署有Facebook的关键

首先,你只需在第一堂课复制这两种方法

  private void getAppKeyHash() { try { PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); System.out.println("HASH " + something); showSignedHashKey(something); } } catch (NameNotFoundException e1) { // TODO Auto-generated catch block Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } public void showSignedHashKey(String hashKey) { AlertDialog.Builder adb = new AlertDialog.Builder(this); adb.setTitle("Note Signed Hash Key"); adb.setMessage(hashKey); adb.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); adb.show(); } 

**从你oncreate方法调用函数getAppKeyHash()如果你想签名的散列,然后使签署的构build安装签署的构build和运行你将在对话框中获得散列键,然后只注意它,并更新它在Facebook dev帐户和评论该function,使另一个签名APK **

如果你的密码= android是错误的,那就把你的电脑密码,它适用于我。

并为生成keyHash尝试此链接在这里

唯一的事情就是使用密码android 。 为什么在那里的任何指南都没有提到?