一、微博开放平台创建自己的应用
创建应用的目的是为了获得唯一的app key和app secret。可以在“我的应用-应用信息-基本信息”中查询,这将在下面授权中用到。
注意:如果创建的是站外网页应用或移动客户端应用,出于安全性考虑,需要在平台网站填写redirect_url(授权回调页),才能使用OAuth2.0。填写地址为“我的应用>应用信息>高级信息”。这里,我们将授权回调页面和取消授权回调页均设置为默认回调页:https://api.weibo.com/oauth2/default.html
二、授权机制:新浪微博的OAuth认证
微博开放接口的调用,如发微博、获取用户基本信息、获取热门微博内容等,都是需要获取用户身份认证的。目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。
通过新浪微博的API接入网站,由于用户无需在您的网站上注册,就可以直接使用他在新浪微博的帐号和口令登录您的网站,这就需要确保您的网站在无需知道,也不能知道用户口令的情况下确认用户已经登录成功。由于用户的口令存储在新浪微博,因此,认证用户的过程只能由新浪微博完成,但新浪微博如何与您的网站通信并告知您是否登录成功呢?这个过程称之为第三方登录,OAuth是一个标准的第三方登录协议,借助OAuth,您的网站就可以安全地接入来自新浪微博登录成功的用户。
OAuth目前主要有1.0和2.0两个版本,2.0版对1.0版做了大量简化,API也更简单。新浪微博最新的API也是采用的OAuth 2.0,整个登录流程如下:
(1)用户在您的网站上点击“使用新浪微博登录”,您的网站将用户重定向到新浪微博的OAuth认证页,重定向链接中包含client_id参数作为您的网站ID,redirect_uri参数告诉新浪微博当用户登录成功后,将浏览器重定向到您的网站;
(2)用户在新浪微博的认证页输入帐号和口令;
(3)新浪微博认证成功后,将浏览器重定向到您的网站,并附上code参数;
(4)您的网站通过code参数向新浪微博请求用户的access token(访问令牌);
(5)您的网站拿到用户的access token后,用户登录完成。
OAuth的access token是提供认证服务的网站(例如新浪微博)生成的令牌,代表一个用户认证信息。在随后的API调用中,传入该access token就代表这个登录用户,这样,通过OAuth协议,您的网站将验证用户的步骤交给新浪微博完成,并由新浪微博告知您用户是否登录成功。
OAuth的安全性是通过步骤4完成的,通过code参数获取access token的过程是您的网站后台到新浪微博网站完成的,用户无法看到获取access token的HTTP请求。如果用户传入伪造的code,则新浪微博会返回一个错误。
三、下载SDK
使用python调用API的话,首先要去下载Python的SDK(软件开发工具包),sinaweibopy。但这个工具包是纯python2的版本,我们使用改写后的python3版本:sinaweibopy3。我在里面作了详细的注释,对源码做了详细研究,大家有不懂的地方可以在下面评论。
四、使用SDK调用微博API获取数据
代码示例也放github上了。具有详细的解释,不过全是英文。
示例代码如下:UserSinaweibopy3.py
五、程序的执行流程
运行UseSinaweibo.py文件,会跳出下面这个界面:
输入微博账号和密码后跳到这个页面:
把code的值在运行程序的控制台输入,然后就微博就授权成功了,然后你就可以根据API接口来获取你想要的数据,我的代码中是获取最新的公共微博和授权用户的Uid。
详细的微博API接口可以通过下面的方法看。进入新浪微博开发者平台: