最近使用新浪微博的 API 开发了一个应用,所以从技术角度来谈谈开发过程中的一些收获,以及对于微博开放平台的一些看法。
很多人对于微博是又爱又恨,因为微博上很多博主的内容非常不错,可又觉得长时间使用微博很浪费时间,因为大部分信息是没啥用处的。
那如何让用户高效获取他想要的信息呢(比如特定用户的微博)?我开发的这款应用就是为了解决该问题。
通过使用这款应用,用户可以选择你想关注的微博用户,每天早晨应用会发送一封邮件,邮件的内容就是关注的微博用户昨天所发的微博。
有了这款应用,你想关注的信息不会遗漏,让你能够在特定的时间去学习这些微博的知识。
这款应用的实现其实很简单,当用户通过该应用关注 m 个微博用户,系统会自动使用特定系统用户的帐号去关注这 m 个微博用户,这样这个特定系统用户的微博时间流中就有了这 m 个用户的微博信息(通过调用新浪微博的 API 来获取),进行相关处理后,通过邮件发送这 m 个用户的微博信息给用户。
在开发这款应用的时候,自己力争不造轮子去写很多类库,完全使用第三方的一些库,从而专注于逻辑代码的编写,使用的库包括:
PHP CodeIgniter 框架
CSS 框架
flat 文件数据库
PHP HTTP 客户端库
PHP Email 库
想使用新浪微博 API 其实挺简单的,只要成为开发者就可以了,当然你要有一个域名和一个虚拟主机,相比微信公众平台来说,成为开发者的门槛低了很多。
新浪微博 API 是数据 API ,不管从数据性质看还是安全角度看,做了很多限制,所以普通用户想使用新浪微博 API 会很“受伤”。这里举几个例子:
对于 API 的频率限制就不多说了,小应用基本上频率限制会很严。
一些非常具备破坏性的 API ,基本上是不开放的,比如我这款应用想自动关注某些微博用户,而对应的 API (friendships/create)是完全不对外开放的,只对手机客户端开放。
假如某个用户没有授权你这款应用,那么假如你想获取这个用户信息的 API (statuses/user_timeline)是不能用的,当然这个限制是应该的。
refresh token 直接取消了,估计也是为了安全。
操蛋的部分 API (statuses/home_timeline)居然对返回数据也做了限制。
首先个人觉得新浪开放平台上的文档非常混乱,让人摸不清之间的关系,所以以自己的方式来去说下看法。
开放平台
开放平台是一个生态体系,依托于平台,开发者和平台拥有者能够做一些事情,而这些事情理论上对双方来说都是受益的。
开放平台从技术体系上来说包含二部分,第一部分就是 API,微博的 API 就是数据(资源),是新浪的核心资产(API 即公司)。第二部分就是 SDK ,SDK 是为了方便开发者使用 API 而弄出的框架。
从使用平台来分,SDK包括:语言SDK(PHP SDK、Python SDK)、手机客户端 SDK、JavaScript SDK(可以理解为浏览器),组件。
除了组件 SDK,其他 SDK 需要具备一定的编程能力,而组件大部分人就会使用(拷贝一段代码就能运行)。
另外新浪微博也有一些业务平台,比如,轻应用(希望开发者做一些引用托管在微博轻应用中),想法很好,但是目前已经名存实亡了。
微博的数据基于“个体”
所谓“个体”就是把一个公司也认为是“个体”,为什么这么说呢,在表现形态上企业和一个用户的微博没有什么本质的区别(发微博),所以演变到现在,企业微博这个概念已经很弱化了,所有的数据都是基于“个体”,只是类型上有所区分(普通用户、蓝V、专业版企业用户)。
个人觉得这么理解是简化方式的理解,原来自己的一个领导负责过企业版微博。所谓企业版微博,必须将普通用户的微博帐号和企业版微博帐号关联起来,可是仔细想想这不就是内部系统吗,在以对外为主的微博平台,至少从结果上看没发展起来,至于为什么没发展起来,自己目前没有能力分析出来。个人的感觉就是用户关注的是你这个微博发出来的信息,不需要什么花里胡哨的东西,比如在企业微博上卖东西(从技术角度上来说也很难实现,还不如找个程序员专注于自己业务的开发)。
其实对于微博来说这样也很好,专注于数据的产出,简化微博 API 体系,不要搞的太复杂和巨大。
基于“个体”类型,微博 API 对应的权限也会有区分,比如 蓝V 用户开发者就扩展了很多 API (比如群发消息接口等等)。
微博 API 分类
个人理解微博 API 分为二种:
基础数据 API:比如获取关注列表,发微博,获取时间线等等。
增值类 API:比如粉丝服务类 API (和粉丝互动)、商业数据 API。
对于基础数据 API 来说,其实已经没有发展空间了,一方面是 API 的限制太多(这个原因很简单,微博总不希望有款使用量很大的客户端和官方客户端竞争把?)。
大部分开发者使用基础数据 API 的场景很简单,比如在企业官网上增加“微博登录框”,“加关注按钮”等等。
增值类 API 我觉得可以大力发展,比如对于粉丝服务类 API 有点类似于微信公众平台(可以和用户互动),这样开发者就可以推送消息给用户(比如给付费用户推送);而商业数据 API 是将微博的核心资源(数据)分享给一些营销类公司,比如一些企业想进行一些调研,可以使用商业数据 API 进行决策。
而增值类 API 可以直接给微博公司带来收益,这也可能就是大数据的一种商业化把,虽然个人很反感“大数据”这个词。
为什么微博开放平台没有做起来
比较微信公众平台,微信基本是每个人必装的 APP,但是微博客户端并不是必装的 APP,这方面微博要好好反思下,微博客户端太重了(还漫天的广告,我喜欢用手机 H5 版)。微博由于没有客户端这个强有力的载体,所以也影响了平台的发展。
另外微信生态就是手机客户端,而微博生态太多了,有手机,电脑等各色各样的平台,所以个人觉得在策略上会分散太多,导致没有重点。想想微博要是没有网页版会怎么样?
为什么大家喜欢使用公众平台开发:
个人觉得一方面开发复杂度低
另外开发者觉得公众平台这个载体非常好,利于传播
公众平台关注者的忠诚度也更高,或者说应用场景非常合适(可以开发很多功能和用户互动)
微信就相当于一个 Apple Store,企业完全不用独立开发一个 APP,直接在公众平台开发即可(省钱省力)
微博的关系非常牢靠,基本都是认识的人(当然对公众平台来说并不是,不过有利于公众平台上的信息传播)
那么微博开放平台为什么没有做起来呢?个人觉得原因肯定是多方面的,每个人都有自己的看法,在分析的时候也不要反推,每个体系都是演变过来的,作为我们技术人员来说,就是不断的观察,分析,从而提升自己的能力。
结论,假如你想使用微博 API 去做一款应用(而且重度依赖),个人感觉应该放弃这个意愿。
最后欢迎大家使用我这款应用,使用地址 http://weibonotice.newyingyong.cn,假如使用的人比较多,会持续优化。