Facebook Android Generate Key Hash

试图创建一个与 Facebook 集成的 Android 应用程序,我已经到了文档中必须生成一个密钥哈希文件的部分,它指定运行以下代码

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

当我在我的终端运行这个,我得到一个错误的密钥存储被篡改或密码是不正确的,

I just want to generate my Key Hash

有人能告诉我正确的方向吗?

224899 次浏览

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

然后,当您下一次尝试构建调试包时,Eclipse 插件应该生成一个新的证书。

如果成功了告诉我。

调试证书的密码是 Android 而不是 Android

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

为了生成密钥散列,您需要遵循一些简单的步骤。

1)下载 Opensl 网址: 给你。

2) Make a 开放 folder in C drive

3)将 Zip 文件解压缩到在 C驱动器中创建的 openssl文件夹中。

4)在我的案例中从 。机器人文件夹复制文件 debug.keystore(C: Users SYSTEM.android)并粘贴到 JDK bin Folder (C: Program Files Java jdk1.6.0 _ 05 bin)

5) 打开命令提示符并给出我的案例中 JDK Bin 文件夹的路径(C: Program Files Java jdk1.6.0 _ 05 Bin)。

复制以下代码并按回车键

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

7)现在你需要 输入密码,密码 = 机器人。

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

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

10) get back to C drive and 给出公开箱的路径 folder

11)复制下列代码并粘贴

Openssl sha1-二进制调试. 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文件这是你的密钥散列。

通过添加下面的代码,可以从应用程序本身获得正确的密钥散列(对于 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) {
}

将 com.package.mypackage 替换为包名

为 facebook 创建密钥散列调试

Add code to print out the key hash for 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) {


}

为 facebook 创建密钥散列发布

  1. Download openssl-0.9.8e_X64

  2. 在 C 盘中创建一个 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: is path to jdk file in your computer

  6. (press) keytool-exportcert-alias gci-keystore D: file keystorerelease | C: openssl bin openssl sha1-biny | C: openssl bin openssl base64.注意: D: 文件夹 keystorerelease: 是您的 keystorerelease 的路径

  7. 输入密钥存储库密码: 这是您的注册密钥存储库释放时的密码。

    然后您将得到一个键散列: jDehABCDIQEDWAYz5Ow4sjsxLSw =

  8. 登录 facebook,访问管理应用程序,将密钥散列粘贴到应用程序的 developers.facebook.com 上

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

从.p12密钥中提取密钥哈希

  1. 打开终端或命令行并导航到.p12键所在的位置。
  2. 输入: “ keytool-v-list-keystore mycert.p12-storetype pkcs12‘′ ,其中 mycert.p12是. p12密钥的文件名。
  3. 输入 keystore password (导出.p12 key 时使用的密码)。 4. 复制 sha1指纹签名字节文本。
  4. 写入“ sha1.bin”文件需要 sha1指纹签名处的字节。可以使用十六进制编辑器粘贴所复制的字节。然后,将文件保存为“ sha1.bin”。
  5. 再次打开终端并输入: “ openssl base64-in sha1.bin-out base64.txt”。
  6. 由此产生的“ base64.txt”将包含 Facebook 所需的 Key Hash。

非常简单的十六进制 mac 编辑器: HexDevil

OpenSSL 应该预先安装在 Mac 上,下面是 Windows 版本的链接。

林克

I was able to do perform the requested task with some of the solutions here, but thought to myself, boy that is stupid... why not to write a small Java code that does this and pack it into a Jar, so I did...

罐子

在 Windows 8上运行... 没有尝试其他操作系统。

最后:)

我的故事是这样的:

  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. Change PROJECTNAME to your package name!

  3. Sign your app (Android Tools->Export Signed Application)
  4. In your main activity where you paste code from 2 option, in your layout create TextView with id textstring
  5. uncomment two lines, that your sign code would be set to TextView 6 Wuolia, you have your HASH , install app on your phone!!! and check your hash Key!
  6. Now when it is visible , go to facebook app you created and add it to [Key Hashes]
  7. Note that your package name should be same as on facebook [Package Name] under [Key Hashes]
  8. Have a nice day :)

为了生成发布密钥散列,您需要遵循一些简单的步骤。

1)下载 开门

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

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

4)从。并粘贴到 JDK bin Folder 中(C: Program Files Java jdk1.6.0 _ 05 bin)

5)打开命令提示符,给出 JDK Bin 文件夹的路径(C: Program Files Java jdk1.7.0 _ 40 Bin)。

6) Copy the following code and hit enter

Keytool-exportcert-alias abcd-keystore D: Projects MyAppFolder keystore.txt | C: openssl bin openssl sha1-biny | C: openssl bin openssl base64 Ex-keytool-exportcert-alias (你的 sing apk 别名在这里输入,就像我的 sign apk alias 名字是 abcd 一样)-keystore“ signedapk 生成的 keystore apth enter here”| “ openssl bin 文件夹路径在这里输入”sha1-biny | “ openssl bin 文件夹路径在这里输入”base64

7)现在你需要输入密码,Password = (在这里输入你的密钥库密码)

8)你得到了用于发布应用程序密钥散列的密钥库

这个问题最简单的解决方案:

我已经有这个问题两个月了。我的键哈希已经堆积到9了。今天我终于找到了一个简单的解决办法:

第一步:

在手机上安装从 facebook 开发者页面下载的 facebook sdk。不要安装正常的 facebook 应用程序。确保你能登录 facebook。那就退出。

第二步:

导出您的应用程序与您的最终发布关键作为一个 apk,就像您将它上传到播放商店。

第三步:

通过 usb 线或 usb 棒将 Apk 文件放在手机上。

第四步:

Install your app, using a file manager: Example

第五步:

启动你的应用程序并尝试登录 facebook。一个对话框会打开并告诉你: “在 facebook 开发者控制台中找不到 YOURHASHKEY 键”

第六步:

把钥匙写下来。

第七步:

把它放到你的 facebook 开发者控制台并保存。现在你完蛋了。任何人下载你的应用程序,发布早期使用的密钥存储可以登录到 Facebook。

好好享受吧

尽管这个帖子已经很老了,但我还是想分享一下我的经历(最近开始在 facebook 上工作) ,在我看来是直接的:

  1. 从下面的链接下载 openssl: Https://code.google.com/p/openssl-for-windows/downloads/list
  2. 将其解压缩到本地驱动器(例如,C: openssl)
  3. 要获取 facebook 集成的 Development 键,请在 windows 中的命令行中使用以下命令:

    Keytool-exportcert-alias androiddebug-keystore% HOMEPATH% . android debug. keystore | “ C: openssl bin openssl.exe”sha1-bin | “ C: openssl bin openssl.exe”base64

注意! : 请替换 openssl.exe 的路径(在本例中是 “ C: openssl bin openssl.exe”)和您自己的安装路径。

  1. 它会提示输入密码,例如:

Enter keystore password: android

输入 android 作为密码,如上所示。

就是这样! 你会得到一个28个字符长的钥匙。干杯!

使用相同的过程获取发布密钥。只需用以下命令替换该命令并使用发布密钥别名即可。

Keytool-exportcert-alias YOUR _ RELEASE _ KEY _ ALIAS-keystore YOUR _ RELEASE _ KEY _ PATH | “ PATH FOR openssl.exe”sha1-bin | openssl base64

大家好,这是我的故事,我是如何得到签名的脸谱网的钥匙

首先,你只需要在第一个类中复制这两个方法

    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 ()如果你想要有签名的散列,那么让有签名的构建安装有签名的构建并运行,你会在对话框中得到散列键,然后只需要注释它并在 facebook 开发者账户上更新它,注释该函数并创建另一个有签名的 APK

如果你的密码 = android 是错误的,然后把你的电脑密码,它为我工作。

And for generate keyHash try this link 译自: 美国《纽约时报》网站(http://www.youtube.com/watch? v = LUv8NDgu2Xk)原著: http://www.youtube.com/watch

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

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

为 Facebook 生成一行解决方案

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

我唯一能用的就是密码 android。为什么外面的指南里没有提到呢?

生成 Debug 散列键

  public String hashkey(Context context) {
String keyhash = "";
try {
PackageInfo info = context.getPackageManager().getPackageInfo(context.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));
keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
}
} catch (PackageManager.NameNotFoundException e) {


} catch (NoSuchAlgorithmException e) {


}
return keyhash;
}

生成发布散列键

 keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64

在 kotlin 中使用它在日志中打印密钥散列

try {
val info = context.getPackageManager().getPackageInfo(context.packageName,
PackageManager.GET_SIGNATURES);
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
}
}catch (e:Exception){


}

Simplest way to generate hash key.

要求: 钥匙

您可以通过两种方式从密钥存储库文件中获取 SHA1密钥

1) 定位密钥库文件,在该位置打开命令提示符,然后使用下面提到的命令

keytool -list -v -keystore {keystore_name} -alias {alias_name}

然后输入你的密码,然后它会返回 md5,sha1和 sha256键。

或者

2) 通过运行 < strong > signingReport

请参考下图。

enter image description here

运行文件后,将生成包含所需 sha1键的输出。

enter image description here

获得所需的 SHA1密钥后

那就去吧

Http://tomeko.net/online_tools/hex_to_base64.php

and paste your sha1 key

enter image description here

最后,你会得到必需的哈希键,你可以用它来应用在脸谱网上。