开放的Facebook
早在2007年5月,已经拥有1.32亿名活跃用户的社交网站Facebook开放了自己的平台, 所谓开放,就是将Facebook拥有的海量社交用户档案和关系数据,通过开放自己的API(应用程序编程接口),将网站用户和关系数据开放给第三方开发者。利用这个框架,第三方软件开发者可以开发与Facebook核心功能集成的应用程序。
Facebook的目的就是为了吸引更多的软件工程师、程序员和游戏开发爱好者将他们开发创造的应用接口到开放的Facebook社区中去,这些开发者开发的应用如果吸引眼球,必然会有更多的人去下载这些应用,这些应用会在社交网站中以口碑传播的形式盛行开来。这些开发者可以直接分享Facebook的用户,迅速提高产品或品牌知名度,可以加载相关广告,实现商业价值和盈利目标。
在这些开发者中,有专门从事开放平台应用开发的公司或个人,他们有明确的商业目的,希望得到收入或其他商业回报;有以兴趣为导向,在开放平台上从事开发的个人,如学生群体等,他们为了在应用传播和使用中获得成就感并获得一定收入;还有一些是看重社交平台用户资源,希望将应用与自身的传统业务结合起来的商家,开放平台对他们来说是推广的渠道和获取用户的手段。
有统计显示,Facebook的开发者队伍一年多的时间里就聚集了20多万位开发者的45899个应用。这些开发者和应用极大地增加了Facebook的吸引力。而Facebook屏蔽了谷歌的搜索,在谷歌中无法搜索到Facebook的数据,Facebook成为独立于搜索世界之外的社交网络。
在介绍 Facebook SDK for Android 之前,有必要了解一下 Facebook Platform 及其 API。据 Facebook 声称,Facebook Platform 允许任何人 “在 Facebook 和 Web 上构建社交应用程序”。为了允许您构建此类应用程序,Facebook 提供广泛的一组核心且高级的 API 和 SDK(参见 参考资料)。
核心 Facebook Platform API 是 Graph API,它允许您从 Facebook 读写数据。Facebook 也具有 Old Rest API。新的 Graph API 将 API 范型从面向方法的从 Facebook 读写数据的方式更改为一种新的方式,即使用对象(比如说用户简介、好友、帖子、照片,诸如此类)及其相互之间的关系或连接。该方法简化了 Facebook API,使之处理对象时更加一致。注意,尽管 Graph API 是***的 Facebook API,但是 Old REST API 仍然是活跃且受支持的。Graph 和 REST API 都适用于移动应用程序(包括原生和移动 web 应用程序),它们通过使用 WebViews 在原生应用程序中包含移动 web 内容。
Graph API 对象被分配一个惟一的 ID,很容易使用一个 URL 访问它,此 URL 可被进一步限定,以寻址一个特定的对象/连接。对象 URL 的一般结构类似如下: https://graph.facebook.com/OBJECT_ID/CONNECTION_TYPE,其中 OBJECT_ID 是对象的惟一 ID,CONNECTION_TYPE 是对象支持的一种连接类型。例如,一个页面支持以下连接:feed/wall、photos、notes、posts、members,等等。
利用 Graph API,您可以检索对象,删除对象和发布对象。您可以搜索、更新对象、过滤结果,甚至动态地发现对象的连接/关系。
默认情况下,应用程序对用户的公共数据具有访问权限。要访问私有数据,应用程序必须首先请求用户的权限(被称之为扩展权限)。Facebook 定义了大量权限,您可以在 Extended Permissions 页面了解它们(参见 参考资料)。
既然您较好地了解了 Facebook Platform API,下面就来看一下 Facebook SDK for Android。
Facebook SDK for Android 是 Facebook Graph 和 Old REST API 的一个 Java 编程语言包装器。此 SDK 是开源的,宿主在 github 的 facebook / facebook-android-sdk 仓库中(参见 参考资料)。注意,由于开源 SDK 的演变特性,它有望发生进一步的更改。SDK 发布于 Apache License, Version 2.0 之下。
Facebook SDK for Android 隐藏了前一节(Facebook Platform API 概述)中介绍的很多细节。这是通过提供 表 1 中描述的 6 个 Java 类来实现的。
类 | 说明 |
---|---|
AsyncFacebookRunner | 一个实现异步 Facebook API 调用的帮助器类 |
DialogError | 一个封装对话框错误的类 |
用于与 Facebook Platform API 交互的主 Facebook 类 | |
FacebookError | 一个封装 Facebook 错误的类 |
FbDialog | 一个为 Facebook 对话框实现 WebView 的类 |
Util | 一个带有大量实用方法的帮助器类 |
Facebook SDK for Android 也带来一些有用的例子,您可以用来作为自己应用程序的起点。
尤其有趣的是核心 Facebook 类和 Facebook Dialog 类,下面将更为详细地介绍它们。核心 Facebook 类封装了对用户进行授权、创建 Facebook 对话框、发出 API 请求、注销用户以及获得或设置访问和会话信息及状态的方法。Facebook Dialog 类实现了一个 WebView 及其创建它的方法以及用于处理 Facebook URL(状态)响应的逻辑。SDK 操作离不开对话框。SDK 提供两种方法进行身份认证,一种称之为单点登录,如果安装了的话,它使用原生的 Facebook 应用程序对话框,另一种是默认的 WebView 方法。本文我将重点介绍 WebView 方法。其余 SDK 类是帮助器类,用于封装错误信息或者提供整个 SDK 中使用的有用工具。
一个典型 Facebook 应用程序的用例:
- 安装 Facebook SDK for Android
- 注册您的应用程序
- 创建 SampleApp
- 显示 Facebook 对话框
- 对用户进行授权
- 发出 API 请求