开放的API,不负责任的接口实现

最近看看了几个微博的 API 接口,一看全都是 OAuth 标准,很开心,本以为标准么,按照规范实现就可以适用于各个微博的接口。

可是后来发现我太天真了,我完全高估了他们。

举一个简单的例子,OAuth认证标准流程:

我使用很著名的 Scribe( https://github.com/fernandezpablo85/scribe-java),因为他的架构很好,用起来很方便,当我写完Sina的 API 之后,测试很好,正常运行。接下来我就同样的写了网易微博和腾讯微博的 API,测试时发现都有问题,仔细查了下官方的文档后,我不明白了,既然都决定使用 OAuth 规范了,为什么总要搞点小特殊,和标准不兼容,是故意的,还是根本没能力实现?既然开放,麻烦做一个负责任的接口。

网易的Web认证和桌面认证居然用了两个接口(我很无语…)

腾讯的桌面认证callback居然用了一个字符串 null (继续无奈…)

以下摘自 OAuth 1.0 (http://tools.ietf.org/html/rfc5849)规范:

oauth_callback:  An absolute URI back to which the server will
                    redirect the resource owner when the Resource Owner
                    Authorization step (Section 2.2) is completed.  If
                    the client is unable to receive callbacks or a
                    callback URI has been established via other means,
                    the parameter value MUST be set to "oob" (case
                    sensitive), to indicate an out-of-band
                    configuration.