6

当我们想使用 Facebook SDK for Android 作为我们的 SSO 解决方案时,我们需要将我们的 Android 应用程序签名放入我们的 Facebook 应用程序设置(Facebook sdk for android的第 5 步)。

并且该签名应该通过运行 Android SDK 附带的 keytool 来生成。

我很好奇facebook如何验证这个签名?

4

2 回答 2

2

一年多后,我想我最好回答我的问题。

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

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;
}
于 2014-04-14T10:50:58.717 回答
1
  • 为了使 facebook 应用程序正常运行,我们需要提供 Facebook “App Id”
  • 对于android平台,我们需要提供包名、类名和“HashKey”
  • 应用程序将主要有 2 个 HashKey 用于“调试”和“发布”版本的应用程序
  • 当应用程序访问 facebook 时,SDK 会在内部生成 HashKey 并将其与在 facebook 应用程序期间提交的 HashKey 进行比较
于 2014-04-09T07:48:35.833 回答