Facebook Android生成密钥哈希

Sco*_*ott 116 android facebook android-keystore

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

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore 
| openssl sha1 -binary
| openssl base64
Run Code Online (Sandbox Code Playgroud)

当我在终端中运行此操作时,我发现Keystore被篡改或密码错误,

我只想生成我的Key Hash

谁能指出我正确的方向?

小智 278

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

1)从这里下载Openssl .

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

3)将Zip文件解压缩到在C Drive中创建的这个openssl文件夹中.

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

5)打开命令提示符并在我的例子中给出JDK Bin文件夹的路径(C:\ Program Files\Java\jdk1.6.0_05\bin).

6)复制以下代码并按Enter键

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

7)现在你需要输入密码,密码= android.

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

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

10)返回C盘并给出openssl Bin文件夹的路径

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文件这是你的密钥哈希.

  • 很好的答案为你+1我已经按照这个并得到了预期的结果:) (4认同)
  • @Vizzz:生成密钥哈希的好方法.感谢这篇文章,希望这篇文章能节省很多时间. (4认同)
  • 谢谢,Vizz.你让我免于痛苦:) (2认同)

Anh*_*arp 146

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

根据我的经验,openssl总是很麻烦,我尝试了facebook建议的第二种方法.这太好了.这是获取哈希键的最佳方法.

第二种选择是打印发送到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
Run Code Online (Sandbox Code Playgroud)

将com.facebook.samples.loginhowto替换为您自己的包名称(Manifest.xml中的包名称).

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

OLD ANSWER(使用openssl生成Keyhash)

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

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

注意:在上面的代码注释中,您需要提供用户的路径(例如,在我的情况下,它是C:\ Users\Anhsirk,您只需要为您的用户帐户更改此路径.

给密码作为android

.如果没有要求输入密码,则密钥库路径不正确.

如果一切正常,它应该给你下面的哈希键.

在此输入图像描述


all*_*lts 20

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

然后,当您下次尝试构建调试包时,Eclipse插件应生成新证书.

如果有效,请告诉我.

  • 我真的不知道这是怎样的答案? (3认同)

tig*_*den 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) {
}
Run Code Online (Sandbox Code Playgroud)

将com.package.mypackage替换为您的包名称


Anh*_*Duy 12

I.为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) {

    }
Run Code Online (Sandbox Code Playgroud)

II.为facebook创建密钥哈希版本

  1. 下载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:是计算机中jdk文件夹的路径
  6. (按)keytool -exportcert -alias gci -keystore D:\ folder\keystorerelease | C:\ openssl\bin\openssl sha1 -binary | C:\ openssl\bin\openssl base64.注意:D:\ folder\keystorerelease:是keystorerelease的路径

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

    然后你将有一个密钥哈希:jDehABCDIQEDWAYz5Ow4sjsxLSw =

  8. 登录facebook.访问管理应用程序.将关键字哈希粘贴到developers.facebook.com上的应用程序中


Vic*_*khe 12

生成哈希键的最简单方法。

要求: SHA1键

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

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

keytool -list -v -keystore {keystore_name} -alias {alias_name}
Run Code Online (Sandbox Code Playgroud)

然后输入密码,然后将返回md5,sha1和sha256密钥。

要么

2)通过运行signingReport

请参考下图。

在此处输入图片说明

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

在此处输入图片说明

获得所需的SHA1密钥后

然后去

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

并粘贴您的sha1键

在此处输入图片说明

最后,您将获得Required HashKey,可以将其用于Facebook。

  • 这个答案比其他答案简单得多,因为它只关心最终输出。总是正确的。在其他情况下,如果签名过程配置错误,我们将不知道如何修复。 (2认同)
  • 这是相当可怕的。请不要将秘密放入随机网站...试试这个:`echo 30:F1:74:91:D8:17:41:4D:31:EA:B8:A8:02:E1:63:74: 2E:8D:26:9B | xxd -r -p | xxd -r -p | openssl base64` (2认同)

Sak*_*nto 9

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

我已经有两个月了这个问题了.我的关键哈希值已达到9个.今天我终于找到了简单的解决方案:

步骤1:

安装从手机上的Facebook开发者页面下载的facebook sdk.不要安装正常的Facebook应用程序.确保您可以登录Facebook.然后退出.

第2步:

使用最终版本密钥将您的应用程序导出为apk,就像将其上传到Play商店一样.

第3步:

通过usb cable或usb stick将Apk文件放在手机上.

第4步:

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

第5步:

启动您的应用程序并尝试使用Facebook登录.将打开一个对话框并告诉您:"在Facebook开发者控制台中找不到密钥YOURHASHKEY"

第6步:

记下钥匙.

第7步:

把它放到你的Facebook开发者控制台并保存.现在你完成了.下载使用以前使用的密钥库发布的应用程序的任何人都可以登录Facebook.

请享用


trg*_*lia 7

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


Fer*_*ego 6

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


小智 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) {
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将PROJECTNAME更改为您的包名!

  3. 为您的应用签名(Android工具 - >导出签名应用程序)
  4. 在粘贴2选项代码的主活动中,在布局中创建带有text stringstring的TextView
  5. 取消注释两行,你的标志代码将设置为TextView 6 Wuolia,你有你的HASH,在你的手机上安装应用程序!并检查你的哈希键!
  6. 现在,当它可见时,转到您创建的Facebook应用程序并将其添加到[Key Hashes]
  7. 请注意,您的包名称应与[Key Hashes]下的[包名称]相同
  8. 祝你今天愉快 :)


Anu*_*iya 5

为facebook生成一线解决方案

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)