使用新浪微博开放平台api同步微博内容至自己网站(新浪微博API新特点与百度地图API相比,我理解)

优采云 发布时间: 2021-09-28 18:07

  使用新浪微博开放平台api同步微博内容至自己网站(新浪微博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 on 网站(廖的github地址好像改名了,所以网上很多旧链接失效了,这是新的有效链接),但是这个程序是基于python2环境编写的,python3的一些系统库发生了变化,调用程序时经常报错。作为一个python初学者,让程序适应python3环境无疑是困难的。幸运的是,一位伟大的上帝做了这项工作。感谢owolf为python3重写的SDK:sinaweibopy3。我用过,运行正常。你可以下载它。我也推荐owolf的文章全网最详细的:

  简单的例子

  先介绍一下新浪微博API的使用过程,供新同学参考。

  1.参数设置

  import sinaweibopy3

import webbrowser

import json

APP_KEY =' 填入你的App Key'

APP_SECRET=' 填入你的App Secret'

REDIRECT_URL =' 填入你的授权回调页'

  笔记:

  说一个我不小心造成的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("please input code : "))

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

  注:这是在OAuth2.0->Token获取中调用sinaweibopy3实现用户授权的过程。当程序运行到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:")

for u in result["statuses"]:

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

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

print(u["text"])

  先进的

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线