新浪微博API新特点与百度地图API相比,我理解

优采云 发布时间: 2021-08-13 21:15

  新浪微博API新特点与百度地图API相比,我理解

  查看 API 使用流程

  通过百度地图API的使用,了解到API调用的大致流程是:生成API指定格式的url->通过urllib读取url中的数据->解析json格式的数据接下来开始研究新浪微博API的使用。

  准备

  新浪微博开放平台是一个使用新浪微博API的平台。使用微博账号登录平台后,申请成为开发者,创建新应用后将获得唯一的App Key和App Secret。 (注:申请不需要提交审核,只要新建一个申请系统,就会分配Key和Secret。)这两个信息也可以在“我的申请/申请信息/基本信息”中找到”。这个页面上还有一项“我的申请/申请信息/高级信息”。点击进入设置OAuth2.0授权回调页面的相关信息。如果不知道填写什么,可以设置为默认回调页面: 。后面需要这三个信息,请复制保存到文件中。

  微博API新功能

  相比百度地图API,新浪微博API增加了OAuth2.0协议进行用户认证和授权。这里只做一个简单的说明(感兴趣的同学可以参考网上的文档图):通过这个协议,第三方应用可以获取用户授权,然后使用license从授权服务器获取token,用于后续的查询API 服务器在数据时验证身份。

  这个验证链接增加了url生成的复杂度。好在网站上已经有廖雪峰老师提供的SDK工具包:sinaweibopy(廖老师的github地址好像改名了,所以网上很多旧链接失效了,是新的有效链接) ,但是这个程序是基于python2环境编写的,python3的一些系统库发生了变化,调用程序时经常报错。作为一个python初学者,让程序适应python3环境无疑是困难的。幸运的是,一位伟大的上帝做了这项工作。感谢owolf为python3重写的SDK:sinaweibopy3。我用过,运行正常。你可以下载它。最详细的我也推荐owolf的文章全网:python3调用新浪微博API接口获取数据。

  简单例子

  先介绍一下新浪微博API的使用流程,供新人参考。

  1.参数设置

  导入sinaweibopy3

  导入浏览器

  导入json

  APP_KEY ='填写您的应用密钥'

  APP_SECRET='填写您的应用密钥'

  REDIRECT_URL ='填写您的授权回调页面'

  注意:

  这个文件需要和sinaweibopy3.py放在同一个文件夹中。

  填写的三项信息都是准备中提到的信息。

  这里讲一个我粗心造成的bug,给大家提个醒。一开始,我运行程序时,每次都出现“重定向地址不匹配”的错误提示:

  使用微博账号登录时出错!授权第三方应用程序时出错。请联系第三方应用的开发者:XXX 或稍后重试。

  错误代码:21322 重定向地址不匹配

  在网上找解决办法,需要设置回调页面,不过我在前面的步骤中已经设置好了。为什么我还是有这个问题?后来在文章看到一篇文章,提到回调页面地址要和程序中的REDIRECT_URL一致。我想到了程序示例,一开始使用http:。我看填的时候地址是一样的,所以没改。 网站上是https: 一开始,有's'的区别。当时还以为是地址,没想到和原来大不一样!

  2.OAuth2.0 验证生成的url

  client = sinaweibopy3.APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=REDIRECT_URL)

  url = client.get_authorize_url()

  webbrowser.open_new(url)

  result = client.request_access_token(input("请输入代码:"))

  client.set_access_token(result.access_token, result.expires_in)

  注:这是在OAuth2.0中调用sinaweibopy3实现用户授权的过程->获取Token。当程序运行到client.request_access_token时,会弹出输入提示“请输入代码:”,询问代码?这是什么意思?打开浏览器,会看到出现OAuth2.0验证回调页面。地址栏中的'code='后面有一串字符。这就是我们想要的Token信息。复制粘贴进去,程序继续运行。

  3.从 API 读取数据

  运行以下代码读取公共微博数据并显示结果。

  result=client.public_timeline()

  print(json.dumps(result,indent=2,ensure_ascii=False))

  通过查看数据结构,可以提取出具体的信息。例如,使用以下代码输出用户的微博昵称、位置和最新的微博文本。

  number=result["total_number"]

  print(number,"users:")

  对于你的结果["statuses"]:

  print(u["user"]["screen_name"])

  print(u["user"]["location"])

  print(u["text"])

  高级

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线