使用 Groovy 构建社交网络混搭(Mashup)应用程序

基于 Web 的社交网络如今已是一大趋势。Twitter、Facebook 和 LinkedInSocial 等应用程序的迅速普及表明,人们希望能够与志趣相投的人建立联系。另外一种流行的事物就是开放的应用程序接口。例如,Google 和 Twitter 面向全世界的开发人员,使他们能够进行创新。这两种平台都提供了用于查询、以及最终将您可以想象到的任何功能集成到应用程序中的 API。

混搭是典型的 Web 2.0 应用程序;它们实际上是将不相关的应用程序无缝整合到一个有效实体。该实体将驱使它工作的组件完美地隐藏在幕后。希望包含到混搭社区的实体所提供的开放 API 常常依赖于 RESTful 原理(参阅 参考资料),这使构建混搭比想象的要容易。

如今比较流行的混搭应用程序是 Google 地图。Google 地图实际上是一个 JavaScript 库,允许您向应用程序添加表示位置 的概念。通过为 Google 地图提供一些位置信息(使用地址或坐标的形式),就可以构建一个可视化地表示该位置的地图。如果您曾经使用过 Google 的在线地图应用程序(比如为了获知驾驶方向),那么您已经见识过 Google 地图的实际应用。

Twitter 是一个流行的社交网络应用程序。它允许人们向他们的追随者组成的网络发送任意内容的更新(称为 tweet)(在 Twitter 中,好友 是您所追随的人,追随者 指追随您的人)。这常被称为微型博客。您可以查询 Twitter 的 API,了解 Twitter 数据的各个方面 — 例如,满足特定条件的 tweet(比方说,引用 Java™ 编程的 tweet),或者特定用户的好友甚至追随者的姓名。除此之外,Twitter 还存储位置信息,因为 Twitter 用户可以选择提供他们的位置。

因为 Twitter 公开位置信息,所以可以将 Twitter 与 Google 地图整合,创建一个允许人们根据特定位置查看 Twitter 的混搭。这就是本文将要讲述的内容:构建一个简单的应用程序,允许用户查看他们的好友的地图 — 用户网络的地理视图。执行下面三个步骤实现这个目标:

  1. 通过基于 Java 的第三方库绑定到 Twitter。
  2. 通过 Google 地图实现一个地图。
  3. 通过 Groovlets 和一点 Ajax 将所有内容与 Groovy 绑定在一起。

假定您已经在系统上安装了 Groovy。在操作中,我将陆续指出需要的其他工具。

公开的 Twitter

Twitter 广泛的 API 支持非常多的功能(参阅 参考资料)。您可以使用它通过位置和关键字搜索 tweet、获得 Twitter 用户的好友和追随者列表,甚至看到这些好友和追随者的 tweet。Twitter API 总体上是 REST 风格的:它公开一系列与功能相映射的统一资源标识符(Uniform Resource Identifiers,URI)。

因为任何人都可以使用 Twitter 的 API,所以有很多开发人员已经创建了便于使用 Twitter 的库。我将使用 Twitter4J 封装 Twitter API,这是一个基于 Java 的库。为继续后面的操作,请 下载 twitter4j-1.1.4.zip 并将 twitter4j-1.1.4.jar 添加到类路径。为了利用 Twitter4J(更确切地说是 Twitter)做有用的事情,需要在 Twitter 上创建一个帐户,并且要追随一些人,以便制作好友的地理视图。

使用 Twitter4J

要了解 easyb 行为驱动开发框架的更多信息,请查看 Andrew Glover 的教程 “用 easyb 驱动开发”。

Twitter4J 库的中心接口是 Twitter 对象。对于给定的 Twitter 帐户,通过使用该帐户的用户名和密码实例化一个新的 Twitter 对象后,就可以连接到 Twitter 网络。清单 1 中为 johndoe 用户实现了此操作(使用 easyb),他的密码是 5555


清单 1. 使用 Twitter4J 连接到 Twitter

scenario "Exploring Twitter4J's login functionality'", { given "an instance of Twitter4J", { twitter = new Twitter("johndoe", "5555") } then "the test method should return true indicating things are working", { twitter.test().shouldBe true } }

有了一个有效会话后,就可以查询(甚至更新)Twitter 实例来获得有趣的信息。例如,我可以通过调用 getFriends 获得一个帐户的好友列表(即 Twitter 帐户追随的人),如清单 2 所示。这个方法返回一个 User 对象列表 — 每个对象代表一个有效的 Twitter 帐户。


清单 2. 使用 easyb 通过 Twitter4J 获取好友列表

scenario "Twitter4J should support finding a user's network of friends", { given "an instance of Twitter4J", { twitter = new Twitter("johndoe", "5555") } then "the getFriends method should return a collection of users", { twitter.getFriends().size().shouldBeGreaterThan 0 } }

如您所见,Twitter4J 的 API 非常简单直观。

在此,可以通过 getLocation 方法确定特定用户的位置。这个位置是一个简单的名称,如 Denver、Colorado,甚至 Virginia。此外,您可以找到其他有趣的信息,如某位 Twitter 用户的肖像图片(通过调用 getProfileImageURL)、用户的真实姓名(通过适当命名的 getName 方法)、屏幕名称,甚至 Twitter 用户可以选择提供的个人简介(通过 getDescription 方法)。

事实上,与某人关联的好友列表、位置、照片和个人简介是创建有趣混搭应用程序所需的全部内容。我会将这些信息与 Google 地图整合并显示某个 Twitter 帐户的网络地理视图。

设置 Google 地图

从 Google 地图入手非常简单,首先必须 获得一个 API 键。该键是免费的,但它绑定到一个特定的 URL,因此要为本文的应用程序生成一个 API 键需要提前做一点准备。因为它是一个 Web 应用程序,我将利用一个 servlet 容器(如 Tomcat)并(在开发中)为它提供一个上下文名称,如 geotweet。因此,本例中的 Google 地图键要关联的 URL 将是 localhost:8080/geotweet。这个键只是针对开发有效。当我决定使用 acmecorp.biz/geotweet 之类的 URL 将得到的代码移动到生产环境中时,我将需要生成另一个键。

生成键时,使用 Google 就足以提供运行良好的代码片段。将此代码复制到一个 HTML 文件即可。例如,清单 3 是我的初始 index.html:


清单 3. Google 提供的初始代码

Geotweet!

我之前说过,Google 地图是一个 JavaScript 库;因此,您需要注意两点:加载页面以及在页面加载之后 的地图操作。加载页面实际上是在初始化 Google 地图并相应地显示地图。因此,在清单 4 中,HTML 元素有一个 onload 属性。我在这里调用 loadMap JavaScript 函数,它将加载一个 Google 地图实例。


清单 4. 在页面载入时加载地图

				

如清单 5 所示,在 元素的

你可能感兴趣的:(使用 Groovy 构建社交网络混搭(Mashup)应用程序)