使用新浪微博开放平台api同步微博内容至自己网站(草根用户厌倦了传统媒体上对权威的“90度仰视”)
优采云 发布时间: 2021-12-15 08:23使用新浪微博开放平台api同步微博内容至自己网站(草根用户厌倦了传统媒体上对权威的“90度仰视”)
编者按:本文由联合创始人@邵宝麟提供。他是哥伦比亚大学计算机科学博士候选人。2007年获得华中科技大学软件工程学*敏*感*词*。曾在印度Infosys SETLab和美国IBM TJ Watson研究中心进行“下一代高性能分布式计算”研究。深圳乐建网络是一家由美国名校辍学生、美国名校博士、成功企业家组成的创业公司。目前正在开发Web3.0时代的高性能推荐互联网产品。目前正在寻找人才,感兴趣的朋友可以联系@邵宝麟或@戴虎宁。
现在互联网上最流行的是“社交网络”。在国外,烧了投资者无数美元的SNS公司终于陆续上市;在国内,新浪、腾讯、搜狐甚至百度都调整了战略,将微博作为重要的战略布局。
对于这些巨头来说,微博要么是巩固帝国版图的战略防御武器,要么是追赶对手甚至反击的绝佳机会。
对于媒体人或意见领袖来说,微博是他们的扩音器,他们希望微博成为未来社会进步的*敏*感*词*。
对于一大批草根用户来说,在厌倦了传统媒体权威的“90度仰视”和网络上与同龄人的“0度交流”之后,微博为他们提供了独一无二的45度视角,让他们看到你也可以在倾听的同时有效地表达。
因此,微博几乎一夜之间风靡全中国。面对这样的市场,创业者没有理由不兴奋。问题是,微博(SNS平台)对创业者意味着什么?Linkedin 创始人 Reid Hoffman 最近的观点可能代表了美国资本市场的普遍看法:“如果 Web 1.0 涉及“去搜索,获取数据”和一些有限的交互性;如果 Web 2.0涉及“真实身份”和“真实关系”,那么Web 3.0 将是“真实身份产生海量数据”。这就好像在说现在是最好的时代,也是最坏的时代。
面对如此海量的用户生成内容,创业者第一时间就有机会拥有一个上亿用户的平台,以及在这个平台上属于每个用户的唯一数据。但同时,如果不分析和利用这些内容,“信息过载”将严重降低互联网的效率。这是刚性需求。但企业家担心的是这些社交平台本身——它们是否开放?他们现在有多开放?他们未来会开放到什么程度?我们可以从多个维度来讨论这个问题:企业战略、社会趋势、技术发展等等。
但创业者最关心的是这些平台提供的API(应用程序接口)。毕竟内容是平台的,API几乎是其他人获取这些内容的唯一合法途径。API的种类是否丰富,数据是否完整,使用时有多少限制,直接影响到创业想法的可行性。因此,我们将从以上几个方面对中国最流行的两个微博平台腾讯和新浪做一个简单的比较。
API多样性
使用开放平台的开发者最关心的是“这个平台提供了哪些API”和“这些API可以实现什么功能”。新浪已开放近百个API接口。与腾讯相比,开放方式更接近推特。如果我们仔细对比新浪和推特的API,会发现两者不仅数量相当,而且从功能上来说,新浪几乎提供了所有推特的开放服务。相比之下,腾讯API的种类要少得多,目前只有60个左右。仔细看,我们可以将微博平台提供的服务大致分为:公共内容、用户内容、用户关系链、其他辅助功能(如搜索)。
1、 在公共内容上,腾讯和新浪都提供了获取公共微博和热点话题的接口。但新浪的热门话题界面更加丰富,包括每周、每日和每小时的热门话题。而腾讯只提供了“话题热榜”界面,返回当前最热门话题。
2、在“用户内容”方面,两个平台的差异就更加明显了。新浪的API接口以用户为中心,而腾讯则更注重提供基础数据。例如,对于微博上的转发和评论,新浪直接提供了API来获取用户发送和接收的评论。但是,腾讯只提供了“获取微博所有评论”的API。这意味着“用户收到的评论”可以通过新浪微博上的API请求获得。在腾讯平台,开发者需要先获取用户发布的微博列表,然后再持有。微博再次向腾讯征求所有意见。不仅如此,腾讯还没有开放“获取用户评论”的界面。
3、 关于开通“用户关系链”,腾讯和新浪的差别不大,所有第三方都可以获得用户的粉丝和好友列表。由于腾讯微博本身提供了“专听”功能,用户的“专听列表”也可以通过其API获取。
4、最后,在“可访问性”上,双方提供了“好友推荐”和比较完善的搜索服务(搜索用户,搜索微博),但新浪目前支持获取可能对Tag感兴趣的用户” ,该API为基于微博的推荐服务提供了有效的参考信息。
API 的数量和类型是多样性的一方面,另一方面是每个 API 的功能。与腾讯相比,新浪的API功能更加丰富。以“获取用户微博”界面为例,新浪接受的参数如下:
请求参数
必填类型和范围说明
sourcetruestring A*敏*感*词*ey在申请应用时分配,代表应用在调用接口时的唯一标识。(OAuth授权不需要此参数)
:idfalseint64/string 根据用户ID(int6<@4)或微博昵称(字符串)返回指定用户的最新微博消息列表。该参数为REST风格参数,见注释
user_idfalseint64 用户ID,主要用于区分用户ID和微博昵称。当微博昵称与用户ID产生歧义时,建议使用该参数,尤其是微博昵称与用户ID相同时
screen_namefalsestring 微博昵称,主要用于区分用户UID和微博昵称。当两者相同且有歧义时,建议使用该参数
since_idfalseint64 如果指定该参数,则只返回ID大于since_id(即发布时间晚于since_id)的微博消息。
max_idfalseint64 如果指定该参数,则返回ID小于等于max_id的微博消息
countfalseint,默认值为20,最大值为200。指定每页返回的记录数。
pagefalseint,默认值为1。页码。注:最多可返回 200 条分页内容。
如果id、user_id、screen_name这三个参数都没有指定,则返回当前登录用户发布的微博消息列表。
base_appfalseint 是否根据当前应用获取数据。1表示限制本应用的微博,0表示不限制。
featurefalseint 微博类型,0 全部,1原创,2 图片,3 视频,4 音乐。返回指定类型微博的信息内容。
相比之下,腾讯的界面更原创:
请求参数
必填类型和范围说明
oauthtruestringoauth 标准参数
Formatfalsestring 返回结果的格式:xml 或 json
Pageflagfalseint 页面标志,0 表示第一页,1 表示向下,2 表示向上
pagetimefalseint 本页开始时间,第一页填0,继续翻页:填上次请求返回的最后一条记录的时间
Reqnumfalseint 每个请求的记录数
LastIdfalseint64 第一页填0,继续向下翻页,填上上次请求返回的最后一条记录的ID,用于翻页
Nametruestring 需要读取的用户的用户名
我们可以看到腾讯的界面只提供了翻页功能,而新浪提供了微博过滤。不仅是“获取微博”接口,新浪的大部分API都具备一定程度的信息过滤能力,而腾讯的大部分接口只提供基础数据。作为第三方开发者,API接口功能的丰富不仅简化了开发,也降低了部分应用超出API请求限制的风险。
数据的完整性
数据完整性是指开放平台是否限制开发者请求某些数据时返回的数据量。最能体现一个平台的开放性。遗憾的是,从这个意义上说,新浪和腾讯都没有真正开放。以用户的“粉丝列表”为例,可以看出新浪、腾讯和推特的区别。Twitter是一个真正开放的平台,开发者可以通过API获取任何用户的完整粉丝列表。虽然一个请求最多返回 100 个粉丝的详细信息,但我们可以通过在 Twitter 上发送多个请求来获得完整的粉丝列表。再看新浪,一般授权用户最多只能获取5000条最新的粉丝信息,但与推特相比,新浪每个请求最多可以返回200个粉丝。然而,新浪和推特还为开发者提供了专门的“社交图谱”界面,可以一次性获取用户5000粉丝的id。不过,新浪仍将总粉丝数设定为5000人,推特也一如既往的开放。至于腾讯,其API文档并没有限制用户粉丝数,但一个API请求最多只能获取30个粉丝信息,并且没有提供类似“社交图谱”的接口。在这种限制下,可以想象,腾讯微博平台上拥有数十万粉丝的用户很难构建“社交图谱”。Twitter 仍然像往常一样开放。至于腾讯,其API文档并没有限制用户粉丝数,但一个API请求最多只能获取30个粉丝信息,并且没有提供类似“社交图谱”的接口。在这种限制下,可以想象,腾讯微博平台上拥有数十万粉丝的用户很难构建“社交图谱”。Twitter 仍然像往常一样开放。至于腾讯,其API文档并没有限制用户粉丝数,但一个API请求最多只能获取30个粉丝信息,并且没有提供类似“社交图谱”的接口。在这种限制下,可以想象,腾讯微博平台上拥有数十万粉丝的用户很难构建“社交图谱”。
请求限制
很多开发者抱怨开放平台,最多的不是API函数的数量,而是各个平台对API请求的限制。但是所有的开放平台(无论是twitter、linkedin还是facebook)都会在一定程度上限制他们的开发者使用自己的资源。这与“开放”策略无关,更多是基于系统安全的考虑。因此,各个平台的API限制策略基本相同。例如,新浪给普通授权开发者每个ip每小时最多10000个API请求,每个用户每小时150个请求。(腾讯和新浪的详细访问权限请参见:和,3)。真正的问题不是平台授予基本授权应用多少请求配额,但是当应用程序因配额而受到限制时,这些平台如何为应用程序解决这个问题。只有为平台设计一个公开、公平的规则,才能真正消除开发者对其开放性的疑虑。
通过以上分析,我们可以清楚地看到,新浪是目前国内最接近推特的微博平台(无论是规模还是开放度),这次山寨也恰到好处。与推特相比,腾讯的微博是一个完全不同的产品。虽然收录了腾讯自己对微博和开放平台的理解和规划,但目前只适合支持基本的“用户驱动”应用。对于“数据驱动”的复杂应用,平台的接口暂时还远远不能满足开发者的需求。