Android SDK:Facebook如何检查哈希密钥?

6
当我们想要使用Facebook SDK for Android作为我们的SSO解决方案时,我们需要将我们的Android应用程序签名放入我们的Facebook应用程序设置中(Facebook sdk for android的第5步)。
而且,该签名应该由随Android SDK一起附带的keytool生成。
我很好奇Facebook是如何验证这个签名的?
2个回答

2

经过一年多的时间,我认为最好回答我的问题。

安卓应用可以通过以下方式获取其他应用的签名:

public String WriteSignature(String packageName)
{     
   PackageManager pm = this.getPackageManager();
   String sig = ""; 
   PackageInfo pi = null;
   try {
       pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
   } catch (NameNotFoundException e1) {
       e1.printStackTrace();
   }

   try {
       for (Signature signature : pi.signatures) {
           MessageDigest md = MessageDigest.getInstance("SHA");
           md.update(signature.toByteArray());
           sig = Base64.encodeToString(md.digest(), Base64.DEFAULT);
           Log.d(ACTIVITY_TAG, sig);
       }
   } catch (NoSuchAlgorithmException e) {
       e.printStackTrace();
   }

   return sig;
}

是的,这段代码可以获取我们提供给Facebook的哈希值。但是你是如何找到一个真实的文档来源来说明这一点的呢?我也很想知道这是如何管理的。当应用程序发出调用时,Google和FB服务器如何将应用程序ID、包和哈希密钥链接起来。 - Calvin

1
为了使Facebook应用程序正常运行,我们需要提供Facebook“应用程序ID”。 对于Android平台,我们需要提供包名称、类名称和“HashKey”。 应用程序通常会有两个“Debug”和“Release”版本的HashKey。 当应用访问Facebook时,SDK内部生成并比较HashKey与提交的HashKey。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接