郑昀 20100819
我平时喜欢玩Mashup,所以对国外各种开放接口都有兴趣看两眼。像Twitter的,Yahoo!的(Yahoo! Pipe、YQL),Google(Buzz、Google Reader、Chart、WebFinger等)的,即使是很不着调的Social Graph API,都能很快测试通过然后嵌到自己的所谓“智能语义聚合框架”里。但对于国内哪怕是所谓“开放平台”提供的API都会比较犯憷。
(Updated:我没想一杆子打翻一船人。新浪开放平台算是中国大陆做得最好的了。文档也很详细。只是我撞了两三次罢了。豆瓣文档很好,调用也很顺利,只是权限保护得非常严格,遂放弃。)
“不问不知道”的新浪微博
权限问题:
四月份时研究新浪微博开放平台 的搜索微博接口,曾经在Twitter上的@TimYang 的提示下调用成功过,但不久后一直调用失败,估计是加什么权限了。问来问去,微博上有新浪的人告知,此接口与其他接口不同,还需要单独申请权限。但它的官方Wiki中对此没有做任何提示,也没有人知道该找谁申请,新浪微博开放平台页面也没有这种提示,给 open_sina_mblog(at)vip.sina.com 发邮件申请也没人回复。
后来居然是在@微博开放平台 的私信指点下(亲人啊,感谢啊),找到了一位工作人员的MSN。他请示上级领导之后告诉我,新浪微博Search API接口只向手机设备开放,对于第三方(互联网)应用不开放。新浪您倒是早点在自家页面上写清楚呀,浪费我时间。(今天又看了下,文档上终于做了提示:『search 搜索微博文章 (仅对新浪合作开发者开放)』。经过测试证明开禁了,第三方也可以调用了。)
example和文档问题:
新浪微博开放平台的SDK下载中提供的Python包(实际就是把Twitter的第三方库tweepy原封不动拿过来)呢,里面提供了 examples ,照理说就是测试用例。okay,按一般 API 的范儿(比如像Amazon API),只需要把APIKey和SecretKey换成我自己申请的即可测试了。但是捏,你要是真这么做,无论哪一个接口调用都是返回error response: status code = 400。为啥捏?因为OAuth不是像他们的 examples 那么玩的,需要写更多代码才能测试通过。堂堂新浪的文档和开发教程,反而不如人家一个小博客写得清楚(还配图呢,你见过新浪配过图吗?):http://jmillerinc.com/2010/05/31/twitter-from-the-command-line-in-python-using-oauth/ 。
为什么我调用Twitter API以及人家提供的各种封装库时,哪怕是第三方提供的开源库,也很少担心这些问题呢?
ExExEx的华为
顺便提一下这个臭名昭著的ExExEx问题。
2001~2002年时做短信二次开发的人都可能看到过华为短信API接口文档,比如有一个函数叫做SubmitA,那么后来不知道哪位大爷要加一 个扩展接口,于是起名叫“SubmitAExEx”,Ex我懂是扩展的意思,但也不用ExEx吧,这不算什么,后来又加了一个扩展,于是,你猜对了,叫:
SubmitAExExEx,
没错,三个Ex。以后的几年里,每次大家(而且还是不同公司的)看到这种接口命名都会笑喷了。