使用微博提供的API接口发送微博

您所在的位置:网站首页 微博新加关注发布微博 使用微博提供的API接口发送微博

使用微博提供的API接口发送微博

2024-07-16 14:46| 来源: 网络整理| 查看: 265

使用微博提供的API接口发送微博

创建微博应用

image-20220505132458106

微博对微博应用开放API接口,不对个人账号开放,我们要先注册一个微博应用,将自己电脑作为应用服务器。如果用户想通过API接口发微博,那么用户要先向微博应用授权,微博应再帮这个用户发微博。

一个微博应用可以提供给很多用户使用。

获取用户授权的过程

这个过程需要三方共同参与:用户,微博服务器,应用服务器。创建微博应用后,我们会拿到一对 App Key 和 App Secret ,应用服务器根据他们生成一个链接,发送给用户。用户点击链接,在网页上登录微博,登录成功后返回CODE。将CODE发送回应用服务器,应用服务器拿着CODE向微博服务器申请这个账号的access_token,有了access_token,应用服务器就有了操作用户微博账号的权限。应用服务器可以通过API接口向微博服务器发送发微博、删微博、评论微博等等各种操作。

设置安全域名

所谓设置安全域名,只要能通过网址 http://域名/xxxxxxxxxx.txt 访问到微博提供的文件即可,我没有完成域名备案,是通过 github pages 完成验证的。

首先要注册一个域名,注册时要注意域名不能以top,xyz等结尾,而是需要以com,cn等结尾。域名要通过备案,这个过程简单,但是需要两三天的时间。将域名解析到应用服务器的IP。在应用的设置界面里,将这个域名添加为安全域名,这个过程中微博会提供一个txt文件。下载txt文件,上传到应用服务器,设置nginx的根路径指向这个文件。参考 其他需要注意的问题

主要是在申请权限的时候需要注意。

在应用的设置界面里,添加应用服务器的IP,微博服务器只接收这个IP发出的请求。发帖频率是受到限制的,每小时只能发送30条微博,超出会被封禁一天。

最后,Python代码可以参考了 lfri 的博客

# /usr/bin/env python3 import requests import json try: from urllib.parse import urlencode except ImportError: from urllib import urlencode # 获取到的 secret key API_KEY = '8888888' API_SECRET = '4fxxxxxxxxxxxxxxxxxxxxx190cf2' # REDIRECT_URI要在微博应用里设置过 REDIRECT_URI = 'http://talk.mapengfei.xyz/' authorization_url = 'https://api.weibo.com/oauth2/authorize' def authorize_url(): params = { 'client_id': API_KEY, 'redirect_uri': REDIRECT_URI } return "{0}?{1}".format(authorization_url, urlencode(params)) print(authorize_url()) # 用户授权 # 点开打印出来的网址,然后在网页上进行确认,页面自动跳转到重定向的页面。在地址栏能获取到code。 CODE = 'cxxxxxxxxxxxxxxxxxxxd684e3df' access_token_url = 'https://api.weibo.com/oauth2/access_token' params = { 'client_id': API_KEY, 'client_secret': API_SECRET, 'grant_type': 'authorization_code', 'code': CODE, 'redirect_uri': REDIRECT_URI } res = requests.post(access_token_url, data=params) token = json.loads(res.text) print(token) access_token = token['access_token'] access_token = '2.00FOqxxxxxxxxxxxxxxxxxxRgoqC' # 发送微博 url = "https://api.weibo.com/2/statuses/share.json" # 必须包含自己设置的安全域名,https://github.pengfeima.cn,否则会发送失败 params = { "access_token": access_token, "status": "小年快乐!https://github.pengfeima.cn" } files={ "pic":open("temp.png","rb") } # POST请求,发表文字微博 res = requests.post(url,data = params, files = files) # 评论这条微博 post_id = res.json()['id'] url = "https://api.weibo.com/2/comments/create.json" params = { "access_token": access_token, 'id' : post_id, 'comment' : "评sdfadsfadsf论" } res = requests.post(url,data = params) 参考 Java新版本API发送新浪微博可能会出现的问题呢_Architect_csdn的博客-CSDN博客如何在nginx添加静态文件 https://www.cnblogs.com/ayay/p/15043695.html


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3