Facebook的Android的生成密钥散列

问题描述 投票:114回答:21

力图打造与Facebook整合的Android应用程序,我已经得到了在你生成一个密钥散列文件的文档的一部分,它指定要运行下面的代码

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

当我在终端运行此我得到密钥库错误篡改或密码不正确,

我只是想我的生成密钥散列

任何人都可以点我在正确的方向?

android facebook android-keystore
21个回答
20
投票

删除您的调试证书在〜/ .android / debug.keystore(在Linux和Mac OS X);该目录是类似%USERHOME%/。Android版的Windows。

然后,Eclipse插件应该产生一个新的证书,当你下次尝试建立一个调试包。

让我知道是否可行。


6
投票

最后 :)

在这里我的故事:

  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选项将代码粘贴您的主要活动,在布局创建的TextView id为textstring
  5. 取消注释两行,那你的星座代码将被设置为TextView的6 Wuolia,你有你的HASH,您的手机上安装的应用程序!并检查您的散列键!
  6. 现在,当它是可见,转到您创建的Facebook应用程序,并把它添加到[键哈希]
  7. 请注意,您的包的名称应该是相同的Facebook [包名称]下的[重点哈希]
  8. 祝你今天愉快 :)

5
投票

一行溶液以产生用于实

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

4
投票

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

1)下载Openssl

2)使在C驱动器一个OpenSSL的文件夹

3)解压缩zip文件到C盘创建这个OpenSSL的文件夹。

4)复制从.android文件夹中debug.keystore在我的情况下(C:\用户\ SYSTEM.android)并粘贴到JDK bin文件夹在我的情况下(C:\ Program Files文件\的Java \ jdk1.6.0_05 \斌)

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

6)复制下面的代码,然后点击进入

密钥工具-exportcert -alias ABCD-密钥库d:\项目\ MyAppFolder \ keystore.txt | C:\ OpenSSL的\ BIN \ OpenSSL的SHA1 - 二进制| C:\ OpenSSL的\ BIN \ OpenSSL的前的base64 - 密钥工具-exportcert -alias(你唱的apk别名在此输入喜欢我的标志APK阿莲的名字是ABCD)-keystore “签署的apk生成密钥库apth在这里输入” | “OpenSSL的bin文件夹路径在这里输入” SHA1 - 二进制| “OpenSSL的bin文件夹路径在这里输入”的base64

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

8)你有哪些用于发布应用程序密钥散列密钥库


3
投票

虽然这个线程是旧的,但我想分享我的经验(最近开始与Facebook合作),其直在我看来:

  1. 从下面的链接下载的OpenSSL:qazxsw POI
  2. 其解压缩到本地驱动器(例如,C:\ OpenSSL的)
  3. 要获取facebook集成发展的关键,在Windows的命令行中使用以下命令: 密钥工具-exportcert -alias androiddebugkey -keystore%HOMEPATH%.android \ debug.keystore | “C:\ OpenSSL的\ BIN \ openssl.exe” SHA1 -binary | “C:\ OpenSSL的\ BIN \ openssl.exe” 的base64

注意!:请更换路径openssl.exe(在本例中为“C:\ OpenSSL的\ BIN \ openssl.exe”)用你自己的安装路径。

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

输入密钥库密码:机器人

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

而已!您将获得28个字符长的密钥。干杯!

使用同样的方法得到释放键。只是替换为以下命令,并使用您的版本密钥别名。

密钥工具-exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | “路openssl.exe” SHA1 -binary | OpenSSL的BASE64


3
投票

生成调试哈希键

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

生成发布的哈希键

  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;
    }

2
投票

伟大的博客帖子上的主题

从关键名为.p12获取关键散列

  1. 打开终端或命令行,然后导航至您的.p12键。
  2. 式中:“密钥工具-v -list -keystore mycert.p12 -storetype PKCS12“,其中mycert.p12是您的.p12密钥的文件名。
  3. 输入密钥存储密码(导出的.p12键时,你所使用的)。 4。复制SHA1指纹签名字节的文本。
  4. 需要在SHA1指纹签名的字节写“sha1.bin”文件。您可以使用十六进制编辑器粘贴复制的字节数。然后,将文件保存为“sha1.bin”。
  5. 开放终端再次与输入:为“OpenSSL BASE64 -in sha1.bin -out base64.txt”。
  6. 由此产生的“base64.txt”将包含需要为Facebook的密钥散列。

适用于Mac和伟大简单的十六进制编辑:HexFiend

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

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


2
投票

尝试通过密码密钥和存储为命令的一部分

Link

1
投票

我能在这里做执行与一些解决方案的请求的任务,但心想,男孩说是愚蠢的......为什么不写,这是否一个小的Java代码,并将其装入一个瓶子,所以我做到了。 ..

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

适用于Windows 8 ...没有尝试任何其他操作系统。


1
投票

大家好其我的故事我怎么得到签订了为Facebook的关键

首先你只需要在你的头等舱复制此2种方法

link to download

**呼叫funcation getAppKeyHash()从你的OnCreate梅索德如果你想签名,则散列使签名版本安装已签名的生成和运行你会得到散列键对话框,然后只要注意它,更新它在Facebook上开发的帐户,并评论说,功能和再拍签署APK **


1
投票

如果您的密码= Android是错误的,那么对我的作品把你的电脑密码。

而对于生成密钥哈希尝试此链接qazxsw POI


277
投票

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

1)下载Openssl的距离:here.

2)使在C驱动器一个OpenSSL的文件夹

3)解压缩zip文件到C盘创建这个OpenSSL的文件夹。

4)复制从.android文件夹中debug.keystore在我的情况下(C:\用户\ SYSTEM.android)并粘贴到JDK bin文件夹在我的情况下(C:\ Program Files文件\的Java \ jdk1.6.0_05 \斌)

5)打开命令提示符,然后给JDK Bin文件夹的路径在我的情况下(C:\ Program Files文件\的Java \ jdk1.6.0_05 \ bin中)。

6)复制下面的代码,然后点击进入

密钥工具-exportcert -alias androiddebugkey -keystore debug.keystore> C:\ OpenSSL的\ BIN \ DEBUG.TXT

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

8)如果您在OpenSSL的Bin文件夹看看,你会得到与DEBUG.TXT的名称的文件

9)现在要么你可以重新启动命令提示符或与现有的命令提示符下运行

10)回到C盘,并给OpenSSL的Bin文件夹的路径

11)将以下代码复制并粘贴

OpenSSL的SHA1 -binary DEBUG.TXT> debug_sha.txt

12)你会得到debug_sha.txt OpenSSL中的bin文件夹

13)再次复制下面的代码和糊

OpenSSL的BASE64 -in debug_sha.txt> debug_base64.txt

14)你会得到debug_base64.txt OpenSSL中的bin文件夹

15)开放debug_base64.txt文件这是你的密钥散列。


0
投票

为我工作的唯一的事情是使用密码 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(); } 。这是为什么没有任何导游提到了吗?


0
投票

在科特林用这个日志打印键哈希

Here

146
投票

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

根据我的经验,OpenSSL的总是被麻烦,我试图通过Facebook的建议的第二种方法。而且它的美妙。这是获得哈希键的最佳方法。

第二个选择是打印出来送到Facebook的关键字hash并使用该值。进行以下更改到您的主要活动的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

用你自己的包名(在包的Manifest.xml名)更换com.facebook.samples.loginhowto。

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

OLD ANSWER(生成Keyhash用openssl)

  1. 生成的签名,你需要安装在您的PC的OpenSSL。如果你没有一个下载的OpenSSL from here
  2. 在C:,创建文件夹openssl
  3. 解压下载的OpenSSL的zip文件的内容到openssldrive C:文件夹
  4. 打开命令提示符
  5. 移动到binopensslC:\openssl\bin在命令提示
  6. 运行以下命令来生成您keyhash。虽然产生hashkey应该问你的密码。 密钥工具-exportcert -alias androiddebugkey -keystore “C:\用户\ Anhsirk.android \ debug.keystore” | OpenSSL的SHA1 -binary | OpenSSL的BASE64

注:在上面的代码需要注意的是,你需要给你的路径,以用户(即在我的情况下,它是C:\用户\ Anhsirk,你只需要更改此为您的用户帐户。

提供密码的android

。如果不问密码密钥库路径不正确。

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


14
投票

右键可以从应用程序本身通过将下面的代码来举杯正确的密钥散列来获得(在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


12
投票

一,创建Facebook的密钥散列调试

添加代码打印出来为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的关键哈希发布

  1. 下载openssl-0.9.8e_X64
  2. 请在C盘一个OpenSSL的文件夹
  3. 解压缩zip文件到文件夹的OpenSSL
  4. 开始 - >运行:CMD(按Enter键)
  5. (新闻)CD C:\ Program Files文件\的Java \ jdk1.6.0_45 \ bin中。注:C:\ Program Files文件\的Java \ jdk1.6.0_45 \斌:在您的计算机JDK的文件夹路径
  6. (新闻)密钥工具-exportcert -alias GCI -keystore d:\文件夹\ keystorerelease | C:\ OpenSSL的\ BIN \ OpenSSL的SHA1 -binary | C:\ OpenSSL的\ BIN \ OpenSSL的BASE64。注:d:\文件夹\ keystorerelease:是你的keystorerelease路径
  7. 输入密钥库密码:这是密码,当您的注册keystorerelease。 然后,你将有一个关键的哈希:jDehABCDIQEDWAYz5Ow4sjsxLSw =
  8. 登录博客。访问管理应用。在developers.facebook.com密钥散列粘贴到您的应用

9
投票

简单的解决方案在那里为这个问题:

我现在已经没有这个问题了两个月。我的钥匙哈希已pyling高达9今天,我终于找到了简单的解决方案:

第1步:

安装您从Facebook开发人员网页下载手机上的Facebook的SDK。鸵鸟政策安装普通的Facebook应用程序。确保您可以登录到Facebook上。然后注销。

第2步:

与你的最终版本主要出口你的应用程序作为一个APK,就像您上传到Play商店中的时候。

第3步:

通过USB数据线或USB记忆棒将APK文件您的手机上。

第四步:

将应用程序安装,使用文件管理器:Example

第5步:

启动您的应用程序,并尝试与Facebook的登录。将打开一个对话框,告诉你:“关键YOURHASHKEY尚未在Facebook的开发者控制台中发现”

第6步:

写下关键。

STEP 7:

把它放进你的Facebook开发者控制台和保存。现在,你就完成了。任何人下载你的应用程序,与以前使用的密钥库公布可以登录到Facebook上。

请享用


9
投票

最简单的方法来生成散列键。

要求:SHA1关键

您可以通过运行signingReport找到SHA1密钥

请参阅下面的图像。

enter image description here

你运行该文件后,你的输出就会产生含有所需SHA1密钥。

enter image description here

然后转到http://tomeko.net/online_tools/hex_to_base64.php

并粘贴SHA1密钥

enter image description here

最后你会得到所需HashKey。


7
投票

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


6
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.