什么是密钥哈希?为什么需要它?它是唯一的吗?为什么 Facebook 集成需要它

Posted

技术标签:

【中文标题】什么是密钥哈希?为什么需要它?它是唯一的吗?为什么 Facebook 集成需要它【英文标题】:What is a key hash?Why it is needed?Is it unique?Why it is necessary for facebook integration 【发布时间】:2015-09-19 18:16:04 【问题描述】:

什么是 key-hash,为什么需要它,它是否独一无二?还有为什么需要 facebook 集成?

我获取HashKey的代码:

try
   PackageInfo info = getPackageManager().getPackageInfo("com.example.packagename", 
            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) 
  e.printStackTrace();

 catch (NoSuchAlgorithmException e) 
    e.printStackTrace();

【问题讨论】:

只是为了安全,所以它是独一无二的...... 独一无二。它在 Facebook 开发者平台中识别您的应用。 【参考方案1】:

什么是密钥哈希?

这是一个28 character 字符串,Facebook 使用它来验证您的appFacebook 之间的交互。

为什么它是独一无二的?

正如 cmets 中已经提到的,它在 Facebook 开发者平台中识别您的 app

为什么需要它?为什么需要 Facebook 集成?

需要验证您的appFacebook 之间的信息交换。如果没有这个,当您将应用发布到商店时,您的 Facebook 集成可能无法正常工作。如果您运行使用 Facebook 登录的应用程序,那么您需要将您的 android 开发密钥哈希添加到您的 Facebook 开发人员资料中。

【讨论】:

【参考方案2】:

要将您的应用与 facebook API 集成,您将需要此密钥。 Log KeyHash 将为您提供您必须在 facebook 应用程序的设置页面中写入的值。 不仅仅是您的应用程序具有给定的 SHA1 代码将能够访问 facebook api。否则你会得到授权错误。 P.S:对于所有应用程序和测试设备甚至工作区来说,它将是独一无二的和不同的。

【讨论】:

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\manish.Manish-PC\.android\debug.keystore" | openssl sha1 -二进制 | openssl base64 这会在我输入 android 时要求输入密码,我会得到一个哈希键,如果我输入其他东西,我会得到一个不同的键。请帮助说明为什么会发生这种情况以及密钥如何区分或在哪种情况下是独一无二的 这是获取密钥库的命令...同样的事情会用你给定的函数来完成 当我输入 android 作为密码时,我得到一个密钥,我输入其他内容,我得到不同的哈希密钥 如果你把android写成密码,它会给出正确的......其他人不会工作 我是集成新手,我不知道这需要什么,请帮助我!!!如何启动以及整合的必要条件是什么

以上是关于什么是密钥哈希?为什么需要它?它是唯一的吗?为什么 Facebook 集成需要它的主要内容,如果未能解决你的问题,请参考以下文章

聚集索引必须是唯一的吗?

哈希算法原理和用途

什么是哈希和范围主键?

什么是稀疏文件,我们为什么需要它?

纯干货分享第九期:什么是哈希算法?什么是非对称加密?

什么是索引,非聚集索引可以是非唯一的吗?