微博官方API使用教程【全流程教学】

发布时间 2023-05-20 19:00:37作者: 小野小野小小野

微博开发者身份认证

访问微博开放平台,登录自己微博账号,登录之后首先需要完善开发者的基本信息。
完善基本信息
填写完成后提交即可,然后需要进行开发者身份认证。
进行身份认证
填写相关身份信息,上传身份证照片然后提交等待审核通过,审核通过后开发者身份就认证完成了。

创建自己的应用

创建应用入口
创建应用页面

在这个页面填写自己的应用名称。(由于不允许应用重名,所以可能名字可能有点不好取),取好名字点击创建即可创建好自己的应用。
我的应用
然后就可以在我的应用页面看到新创建的应用了。

新应用的相关配置

基本信息

应用信息

进入应用信息界面后,显示应用状态为“尚未提交审核”,但是目前不需要再提交审核了,因为开发还没有完成。
在这个页面有应用最重要的两个信息App KeyApp Secret,这两个值注意不要泄露。

高级信息

高级信息

这里有两个很重要的信息需要配置,OAuth2.0授权设置,必须设置授权回调页和取消授权回调页的地址,如果有自己的域名可以填自己的,没有可以按照图中的方式,填写微博默认的回调页。https://api.weibo.com/oauth2/default.html

剩余的其他信息可以不填写。

微博认证流程OAuth2.0认证(核心步骤)

认证流程是为了获得一个access_token,只有拥有这个token才可以调用其他官方API
授权API页面
官方的文档我感觉写的很简略,没有写清怎样请求获得access_token,我试了半天一直是出现各种各样的错误。在网上搜了一圈,网上有说使用sinaweibopy模块进行认证的,但是我搜了一下这个库是提供给python2使用的,python3不支持这个库。然后我又在微博开放平台找Python的SDK,发现现在只有IOS、Android和JS的SDK(很奇怪,我在网上看到其他博主的截图里是由各种语言SDK下载链接的,可能官方现在没有维护这些东西了)。

找了一大圈,找到了支持python3的模块,Github链接为sinaweibopy3
以及相关的解释博客:全网最详:python3调用新浪微博API接口获取数据
使用方法:把Github中的文件下载下来,里面的UserSinaweibopy3文件就是获取access_token的demo,将文件里的APP_KEYAPP_SECRETREDIRECT_URL替换成自己的,然后运行程序即可。
demo片段
运行之后会跳转的微博的认证登录界面,登录成功之后会跳转到新的回调页。
授权成功回调页
如图所示,跳转的地址是之前设置的授权成功回调页+code,code是一个有效期比较短的口令,现在需要拿这个code向微博的认证服务器换取access_token。打开刚刚运行UserSinaweibopy3的界面,会让你输入这个code
输入code
把URL中的code输入后,服务器会返回数据,其中包含access_token,程序会打印在控制台中,这里就不再展示了。

Access Token授权有效期

授权有效期
由于还没有提交审核,所以接口授权级别只能是“测试”,有效期只有1天,过期的时候按照上面的流程再重新请求一个就好了。
注意access_token不要泄露。

接口调用Demo(以评论接口为例)

官方文档中评论接口信息如下图所示:
评论接口文档

根据官方文档,构造请求参数,然后请求对应接口即可,简单的实现代码如下:

补充说明:微博id和微博用户id不是一个东西,微博id是这一条微博的唯一标识,如上图浏览器地址栏所示,490xxxxxx7为该条微博的id。获得一条微博id的方法我目前没有专门找,对我而言可以通过请求微博后端数据获得(针对微博的各个接口我写了个文档,目前还没有发布),另外就是访问m.weibo.cn这个站点,点击要看的微博,地址栏会显示出微博id。

import requests

def send_comment():
    url = "https://api.weibo.com/2/comments/create.json"
    params = {
        'access_token': '2.xxxxxxxxxxxxxxxxxxxxxxxxxxxxC',	# 刚才请求到的access_token
        'id': 要评论的微博ID,
        'comment':'评论内容',
        'rip':'你的公网IP'
    }

    requests.post(url=url, data=params)
    

调用该方法即可实现用刚刚授权的微博账号向微博id为id的微博发送评论。
需要注意的是:rip一定要填写公网IP,如果填写内网IP会请求失败。查看自己公网IP的方法:访问下列的链接即可获得本机的公网IP。

查看公网IP的链接:

另外还发现一个有意思的现象,rip可以自己写,如果填写一个境外IP那么相应评论显示的IP属地就在境外,不知道算不算官方的一个Bug。

其他接口对照官方的接口文档使用即可,方法与上面类似。