Facebook SDK集成之准备篇

前情概要

  1. Facebook SDK集成之纲要篇

集成环境

github上的环境说明有点瑕疵, 在Wosao/readme上做了更正。本地集成环境如下:
1. AndroidStudio 1.4.1
2. Facebook SDK 4.6.0
3. Gradle 2.2
4. OS Win10

目标

本作代码 使用 git checkout -f MyDev-Add-Facebook 获得

本作是其中的第二篇,通过阅读本作,您会知道集成SDK需要哪些东东:
1. Key Hash
2. Facebook App通行证 (app_id)
3. SDK依赖配置

至于,如何使用Android Studio创建工程,这个步骤忽略。

Key Hash

在申请App id过程中需要,分为2中debug key hash值, release key hash值。
debug key hash的生成依赖于 文件 debug.keystore 而release key hash依赖于你自己的release keystore。如何生成release key,自行google。
这里介绍2中方法生成facebook所需的key hash值

命令行生成

  1. Debug Key Hash

    C:UsersAdministrator>keytool -exportcert  -keystore C:UsersAdministrator.androiddebug.keystore  | openssl sha1 -binary | openssl base64
    输入密钥库口令:  android
    bxxxxxxNM5QmqJ8WcFpQR6cys40=

    口令默认是 android, 生成Key Hash是28位字符!
    提示: 这里可以使用facebok提供的key store来替代自有的keystore文件。

  2. Release Key Hash

    C:UsersAdministrator>keytool -exportcert  -keystore C:UsersAdministrator.android.keystoreelease-key.jks  | openssl sha1 -binary | openssl base64
    输入密钥库口令:  Your_Password
    bxxxxxx....xxxx=

    口令是自己App release key 密码, 生成Key Hash是28位字符!

代码生成

推荐使用代码生成方法

public static String printKeyHash(Activity context) {
        PackageInfo packageInfo;
        String key = null;
        try {
            //getting application package name, as defined in manifest
            String packageName = context.getApplicationContext().getPackageName();

            //Retriving package info
            packageInfo = context.getPackageManager().getPackageInfo(packageName,
                    PackageManager.GET_SIGNATURES);

            Log.e(TAG, "

 Package Name = " + context.getApplicationContext().getPackageName());

            for (Signature signature : packageInfo.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                key = new String(Base64.encode(md.digest(), 0));

                // String key = new String(Base64.encodeBytes(md.digest()));
                Log.e(TAG, "Key Hash: " + key);
            }
        } catch (PackageManager.NameNotFoundException e1) {
            Log.e(TAG, "Name not found " +  e1.toString());
        }
        catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "No such an algorithm " + e.toString());
        } catch (Exception e) {
            Log.e(TAG, "Exception " + e.toString());
        }
        return key;
    }

这种方法,不论哪种key hash都可获得, 备用!

Facebook App通行证 (app_id)

如何申请Facebook App id 参考 前文Android Studio集成Facebook SDK
在申请过程中加入key hash值,然后就可以获得App id串。备用!

SDK依赖配置

要将facebook SDK 配置到自己 App中,还需要做一些工作。