注册新浪weibo允许第三方以应用的方式发布微博的小玩意
优采云 发布时间: 2021-07-31 19:16注册新浪weibo允许第三方以应用的方式发布微博的小玩意
前言
学python的想法是前不久萌生的,所以为了练手做了这样一个微博小工具。
注册
新浪微博允许第三方以应用的形式发布微博,所以我们首先需要通过新浪微博开放平台注册一个应用:
weibo_open
打开上述平台的页面,用微博账号登录,然后点击立即访问,开始注册自己的应用,按照提示操作即可。以下是我自己创建的应用程序,名为:
应用
在个人应用的应用信息-基本信息-应用基本信息中找到你的App Key和App Secret。并在高级信息中设置自己的授权回调页面(所谓授权回调页面是指个人应用通过微博账号授权后的跳转页面,设置没有问题,这里我设置为个人微博主页)。
获取代码的授权
看了新浪的SDK,很多人可能会选择对应的python SDK。实际上,这是没有必要的。界面变得更加复杂。我们在这里不使用他的界面。
一般来说,通过微博界面发送微博的第三方应用需要用户授权。我想你以前做过这个,那么哪个授权页面是?
def get_auth_url(client_id, redirect_uri):
return '%s%s?%s' % ('https://api.weibo.com/oauth2/', 'authorize',
_encode_params(client_id=client_id,
response_type='code',
redirect_uri=redirect_uri))
client_id是你的app_key,redirect_uri是上一步填写的授权回调页面地址,将生成的链接复制到浏览器打开,输入自己的微博账号进行授权。
授权
授权成功后,浏览器会跳转到我们设置的授权回调页面。在浏览器地址栏找到code栏,就会有授权码了。
获取令牌
接下来,我们需要通过代码获取token。这个token是我们在微博上发帖的凭证:
def get_access_token(app_key, app_secret, redirect_url):
#通过url_auth输入weibo账号进行登录
#从登录成功后的回调url获得code
url_auth = get_auth_url(app_key, redirect_url)
print('[get_access_token]' + url_auth)
code = input('Input code:')
url_get_token = "https://api.weibo.com/oauth2/access_token"
payload = {
"client_id":app_key,
"client_secret":app_secret,
"grant_type":"authorization_code",
"code":code,
"redirect_uri":redirect_url
}
#获取access_token
res = requests.post(url_get_token, data=payload)
resj = json.loads(res.text)
return resj['access_token']
令牌只需要获得一次,令牌可以一直重复使用。有效期好像是5年
安全的微博域名
新浪微博要求通过应用界面发送的每条微博内容都必须收录一个安全域名字段。您需要在应用信息-基本信息-应用基本信息中配置安全域名。我设置了
调用接口
这里的安全域名还是用自己的微博首页,只需要包括:
def share_weibo(text, img):
access_token = '你的token'
#安全域名,sina限制文本内容必须有此字段
safe_domain = 'https://weibo.com/5296864682/profile?topnav=1&wvr=6'
url_share = 'https://api.weibo.com/2/statuses/share.json'
payload = {
'access_token':access_token,
'status':text + ' ' + safe_domain
}
if img :
files = {
"pic":img
}
res = requests.post(url_share, data = payload, files = files)
else :
res = requests.post(url_share, data = payload)
return res
测试
编写测试代码:
if __name__ == '__main__':
f = open(r"./share.jpeg", "rb")
text = input('Input text:')
res = share_weibo(text, f)
f.close()
运行:
[root@localhost share_weibo]# py sina_weibo.py
Input text:hello sky
成功发布图片微博:
你好天空
如果你想发布视频,很遗憾,新浪没有提供相应的界面。我们只能通过在文本中收录指向现有视频的链接来实现类似的效果。例如,要发布此视频:
运行:
[root@localhost share_weibo]# py sina_weibo.py
Input text:http://t.cn/Ail9eamb?m=4396440127989330&u=5296864682
成功发送视频微博:
视频
你可以在我的微博上看到刚刚发送的视频。
结论
还有一些接口如注释,可以自己测试,在接口管理中可以看到相应的介绍。
附上源码: