文章目录
回顾API使用流程
在上一篇文章Python编程之API入门: (一)使用百度地图API查地理坐标中,通过百度地图API的使用,我们看到API调用的一般流程为:生成API规定格式的url->通过urllib读取url中数据->对json格式的数据进行解析。下一步,让我们开始研究新浪微博API的使用吧!
准备工作
新浪微博开放平台是新浪微博API的使用平台。
用微博账号登录该平台后,申请成为开发者,创建一个新应用后会得到唯一的App Key和App Secret。(注:应用不需要提交审核,只要创建新应用系统就会分配 Key 和 Secret )在"我的应用/应用信息/基本信息"中也可以查到这两个信息。在这一页面中还有”我的应用/应用信息/高级信息“一项,点击进入并设置OAuth2.0授权回调页相关信息,如果不知道填什么好,可以设置为默认回调页:https://api.weibo.com/oauth2/default.html。这三项信息都是后面需要用到的,请复制保存到文档。
微博API新特点
与百度地图API相比,新浪微博API增加了OAuth2.0协议用于用户身份验证和授权。这里仅作简要说明(感兴趣的同学请查看网上文档示意图):通过该协议,第三方应用可以获得用户授权,然后用该许可从授权服务器获得令牌(Token),用于后续从API服务器查询数据时验证身份。
这一验证环节增加了url生成的复杂度,好在网站上已经有廖雪峰老师提供的SDK工具包:sinaweibopy(廖老师的github地址好像改过名字,因此网上很多旧链接无效,这个是新的有效链接),但是这一程序是基于Python2环境编写的,Python3有些系统库有更改,程序调用时经常报错。而作为Python入门者,改写程序以适应Python3环境无疑是一件困难的事。幸好有大神做了这一工作,感谢owolf针对Python3改写的SDK:sinaweibopy3,我使用过,正常运行,大家可以下载。在这里同时推荐owolf的文章全网最详:python3调用新浪微博API接口获取数据。
简单示例
下面介绍一下我使用新浪微博API的过程,为新入门的同学提供参考。
1.参数设置
import sinaweibopy3
import webbrowser
import json
APP_KEY =' 填入你的App Key'
APP_SECRET=' 填入你的App Secret'
REDIRECT_URL =' 填入你的授权回调页'
注:
- 该文件需要和sinaweibopy3.py放在同一个文件夹里。
- 填写的三项信息都是在准备中提到的信息。
这里谈谈我粗心大意造成的一个bug,也给大家提个醒。一开始我运行程序时,每次都出现“重定向地址不匹配”的错误信息:
用微博帐号登录出错了!对第三方应用进行授权时出现错误,请您联系第三方应用的开发者:XXX 或者稍后再试。
错误码:21322 重定向地址不匹配
查找网上的解决方法,要设置回调页,但是在前面的步骤里我已经设置了,怎么还会有这个问题?后来看到一篇文章中提到回调页地址和程序中的REDIRECT_URL要一致,我想到了程序示例是http://api.weibo.com/oauth2/default.html,用的是http:
开头,我在填写时看到地址一样,就没有改动,而网站上是https:
开头,一个's'
之差,当时觉得是一个地址,没想到相差大矣!