不用OAuth授权,10行代码获取用户微博昵称

这种需求看似奇葩,其实很常见,比如你的应用或网站接入了微博登录,一般会在数据库维护用户绑定的微博唯一ID,但用户的可变信息一般不会存。
然后在一些专题页,用到了用户的微博头像和昵称,这时候如果用OAuth协议,需要先获取授权码,再获取token,再调用户信息接口 ...

如果你觉得太麻烦,那就来试试笔者的方法。笔者的微博:http://weibo.com/1864997710 ,直接cURL:

curl 'http://weibo.com/1864997710' -v

* About to connect() to weibo.com port 80 (#0)
* Trying 123.125.104.197... connected
> GET /1864997710 HTTP/1.1
> User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: weibo.com
> Accept: */*
>
< HTTP/1.1 302 Moved Temporarily < Server: WeiBo < Date: Thu, 18 Sep 2014 02:02:22 GMT < Content-Type: text/html; charset=utf-8 < Transfer-Encoding: chunked < Connection: close < Expires: Sat, 26 Jul 1997 05:00:00 GMT < P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR" < Cache-Control: no-cache, no-store < Pragma: no-cache < Location: http://passport.weibo.com/visitor/visitor?a=enter&url=http%3A%2F%2Fweibo.com%2F1864997710&_rand=1411005742.125 < DPOOL_HEADER: alice97 < Set-Cookie: TC-Page-G0=4e714161a27175839f5a8e7411c8b98c;Path=/ < LB_HEADER: alice27 < * Closing connection #0

看来直接抓取用户主页的形式不靠谱,因为未登录,微博给你重定向了。

庆幸的是,微博还有一个页面,是不需要登录,而且恰好有微博昵称。
就是访问某人的微博时产生的邀请注册页,页面中会有TA的微博昵称,于是就呵呵了

下面这个函数,可以帮你实现,无需授权无需登录,根据微博ID获取微博昵称

这样做,有什么好处?
1.少写很多OAuth相关代码
2.也降低了多次http的网络消耗
3.实时性(也可以根据需要缓存起来)

Related post

微信公众号:程序员到架构师

最新文章

Return Top