使用ANE整合Facebook

Integrating facebook use ANE

使用ANE整合Facebook

  • 2013-04-02更新: 加入Native Android App设置部分
  • 2013-05-17更新: 加入支持Android SDK3.0的项目介绍

如何在AIR编写的移动应用中整合Facebook?以下是我这两天的研究成果。

1. 如何阅读开发文档?

Facebook的开发文档很全,但对于一个时间紧、任务重、被Boss一天催10遍,急于实现整合的开发者来说,或许没有那么多时间去详细阅读所有文档。这里整理了一个顺序:

1.1 The Login Dialog

无论如何,登录是第一步。这篇文档不但介绍了关于登录的所有细节,也详细介绍了关于Permissions的用法。去吧:The Login Dialog

1.2 Dialogs Overview

各种SDK中,都提供了Dialogs的相关方法。那么Dialog是什么呢?这篇文档让你了解全部。去吧:Dialogs Overview

1.3 Graph API

Graph API是FaceBook的核心API,不了解它是不行DI。但这篇文档基本上看一半你就懂的。去吧:Graph API

2. 选择哪个SDK?

上面说了,Facebook的核心API是 Graph API ,其他的SDK是架构在Graph API之上。

Facebook大力推荐了四个SDK,不用对不起观众:

但是,对于AIR来说,我们必须将上面的SDK进行二次封装才能用。

2.1 JavaScript SDK

一开始我考虑的是JavaScript SDK,因为它可以同时兼容Mobile Device和Desktop。经常做测试的同学都知道,在AIR模拟器里面测试,比在手机上测试可爽多了。

在Google Code上有这样一个项目:facebook-actionscript-api ,它封装了Facebook的JavaScript SDK,采用StageWebView做登录。但是这个项目最后一次是在2011-10-19,以Facebook一日千里的变化,这个API估计很难用了。

我Checkout了该项目的代码,跑了几个Sample,看了它的所有Wiki,也没有调试成功。该项目的所有Wiki都标注成了departed,看得人心惊胆战啊……

2.2 Native SDK

Facebook提供了原生SDK支持,分别对应iOS和Android设备。可是要在AIR上使用它们,也必须做二次封装。

好在有人已经帮忙做好了这件事,而且直接提供ANE和 项目源码。请大家记住这样的好人吧:ANE-Facebook

这个项目中,使用的AndroidSDK是1.x版本。3.x版本作者也已经基本上实现了,但还有问题。我fork了这个项目,解决了剩下的一点点问题,然后写了一个sample。我新建了 zrong 分支 来进行修改。

这比那几个在Adobe Devnet上写文章,然后卖 $50 的ANE插件的 guy 们厚道多了。

3. ANE-Facebook使用

ANE-Facebook 没有提供 Sample,所以我写了一个:ANE-Facebook-Sample

4. Native Android App设置

如果使用了Native Android App,那么需要在Facebook中需要配置一些信息才能正常使用。

4.1 配套名称

AIR的appid。AIR在打包成Android APK的时候,会自动在appid前面加入air前缀。例如 org.zengrong.facebook.test ,会被自动修改成 air.org.zengrong.facebook.test

4.2 Class Name

配套名称+主Class名称。AIR生成的APK的主Class为AppEntry。例如上例中的APP,应该填写 air.org.zengrong.facebook.AppEntry

4.3 Hash Key

这个值需要使用JDK的keytool来生成,在使用的时候,需要知道原来证书的alias name。假设原来的证书名称为zrong.keystore,alias name为“root”,那么生成Hash Key的代码如下:

keytool -exportcert -alias root -keystore zrong.keystore | openssl sha1 -binary | openssl base64

AIR使用的证书为p12格式,假设证书名称为zrong.p12。那么代码应该这样写:

keytool -exportcert -alias root -keystore zrong.p12 -storetype pkcs12 | openssl sha1 -binary | openssl base64

如果忘记了原来证书的alias name,可以使用这个命令显示它:

keytool -list -keystore zrong2.p12 -storetype pkcs12 -v

关于keytool的用法,可以参看这篇文章:生成Google Play需要的p12自签名数字证书

5. 参考