新浪微博的 OAuth 使用点滴
作者:郑凯
1. 本来以为写程序对程序的接口应该是非常愉快的事情,可实际上新浪微博的 api server 端写的非常糙,比方说在验证过程中,有一步我搞错了,导致提交时 oauth_signature 的值错了,但其他参数,包括顺序之类的都是正确的,可新浪返回的错误代码居然是 500,让我一度以为他们那边刚挂了还没好利索,后来才想起来用别的应用测一下都正常,才确认是我的问题,这种时候显然应该返回 4xx 错误啊。我以为考 HTTP 错误代码的百位 1 2 3 4 5 都属于哪个分类是最最基本的事情,不知道负责写 api server 端的这哥们是怎么混进新浪写程序的,虽然我能理解对于整个微博组来说,肯定是抓了个最烂的人来写这最不重要的功能,但这就导致了如果你不用官方提供的 SDK libweibo 就到处都是麻烦。包括让人啼笑皆非的 [url=http://open.t.sina.com.cn/wiki/index.php/Help/error]错误代码[/url],首先,错误代码不是针对每个具体操作的,而是个 all in one 的总表,其次,非常乱,连个排序都没有(看看 400xx 那些数字吧),最后,他还不全,如果碰到个 40113 token_rejected 之类的错误,很大程度上你要靠巧合了,因为错误信息提供不了任何有用的反馈。
2. OAuth 设计本身已经包含了对参数的签名,保证了在 HTTP 通信的过程中,中间人只能看,不能篡改,但是在富有中国特色的贴图功能时,所上传的图片文件是没有签名的,Tim Yang 的回答是因为服务器的压力所以没有做,加之之前说过的 [url=http://t.sina.com.cn/10503/k4CjGqRKT]OAuth 是典型的过度设计[/url],我估计 Tim Yang 说的过度设计可能就是指签名验证参数这部分。可能是觉得出事的几率小,最多也就是图片被多加个水印啥的。