2011/07/23

开发微博应用 Develop Micro Blog Web App

不知不觉我变成了一个微博控,特别买了新手机之后,基本上上下班的零碎时间我都在刷微博。有一天,我突然想起了之前通过互联网认识自己这篇文章,作者利用自己在twitter和其他web服务上的数据分析自己一年的互联网生活。于是我想到可以在GAE上搭建一个分析自己微博的应用,这个应用能够使用图形化的方式展示自己在不同时间段发微博的条数。
说实话,整个应用十分简单,从微博上获取用户的所有微博,根据不同的时间粒度进行聚合,
然后展现出来就可以了。
说干就干,微博上先发了一条求助,问问同学们有没有相关的经验。马上得到了热心同学的响应,然后,我就去新浪微博开发的主页学习起来。http://open.weibo.com/wiki/index.php/%E9%A6%96%E9%A1%B5
新浪微博的认证方式使用的是Oauth,虽然早有耳闻,但从来没有尝试过。这里有详细的技术规范,有空可以去学习一下。http://hueniverse.com/oauth/,这里还有新浪微博对oauth的介绍:http://open.weibo.com/wiki/index.php/Oauth
简单的说,这是一种不需要用户名密码,安全的授权方式。
1.    用户访问web app,web app向新浪发出一个对用户授权的申请。拿到一个requestToken。
2.    用户同意授权。
3.    页面跳转到web app的callback页面。
4.    Web app使用拿到新浪微博发的accessToken,接下来就可以为所欲为了。

从开发的角度来说,首先,得向新浪微博申请一个key和secret。
然后下载sdk。我用的是java版的sdk,貌似是一个日本人开发的。
发现sdk里面有一个web app的example,于是赶快在Eclipse建了一个web application,导入sdk和引用的lib库。还有call.jsp, callback.jsp。将其中WebOAuth.java中的key和secret换成自己的。
运行,访问call.jsp。饿,然后就发了一条“2057”,这么一条无意义的微博。
总的来说这个例子还是不错的。Getting started,就需要快速的结果来提升信心。

这个例子虽小,但五脏俱全。
Call.jsp是用户访问的页面,它有一个javabean,weboauth。

用户访问call.jsp就会向新浪发送授权请求,并指定授权完的返回页面。
RequestToken resToken=weboauth.request("http://localhost:8888/callback.jsp");
用户同意之后,就会跳转到callback.jsp页面,在这个页面中使用requestToken换取了accessToken。有了accessToken,就可以为所欲为了。
例如例子中,就使用了update这个方法发布了一条微博。
public static void update(AccessToken access, String content) {
        try {
            Weibo weibo = new Weibo();
            weibo.setToken(access.getToken(), access.getTokenSecret());
            Status status = weibo.updateStatus(content);
            System.out.println("Successfully updated the status to ["
                            + status.getText() + "].");
        } catch (WeiboException e) {
            e.printStackTrace();
        }
    }
    

接下来,通过getUserTimeline这个api就能获取到用户最新的200条微博。根据发布微博的时间进行聚合。然后以图形化的效果展示出来,就是最后的效果了。

之后,我把这个应用部署到了GAE上,地址是http://weibostatus.appspot.com 不过,由于这个应用还没有被审核通过,所以只能通过邀请的方式让用户使用,而且只有15个人。
提交审核后,新浪微博以没有应用图标把我给拒了,我看了一下他们的规范,实在有太多的要求,还是放弃了。

完成这个应用之后,说说我的感触。
整个开发过程,我除了花了两个晚上写代码调试,没有花费其他的多余资源。这要感谢google提供了google app engine这个平台。在这一点上,我认为云计算是个好东西,特别是对初创公司来说。创业的优势就在于能够早早的捕捉到用户的需求,开发出合适的产品。天下武功,唯快不破。在云计算平台上开发web app,能节约很多的时间和成本,不过熟悉云计算平台也算是一个成本。
各种网站开放API,也是一个很好的趋势,使用社交网络的用户关系,能够在短时间内吸引大量的流量。看看新浪微博上每天都有的猜猜你的XXX就知道了。
新浪微博对新应用的审核既有利也有弊。审核可以减少垃圾应用,避免亚塔利悲剧的再次发生。但同时,过高的门槛也阻止了创新。况且以新浪这种有什么流行,就自己造个轮子的做法,难保你的应用成功之后被新浪copy的悲剧发生。

没有评论:

发表评论