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

创建微博应用

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

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

获取用户授权的过程

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

设置安全域名

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

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

其他需要注意的问题

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

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

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

# /usr/bin/env python3import 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

使用微博提供的API接口发送微博相关推荐

  1. Java调用 新浪微博API 接口发微博(包含js微博组件、springMVC新浪登录)详解

    参考自:http://www.myexception.cn/program/1930025.html https://blog.csdn.net/qq_36580777/article/details ...

  2. Java调用 新浪微博API 接口发微博,逐项讲解,绝对清晰

    转载自:http://www.myexception.cn/program/1930025.html Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰 最近要做个课程设计,使用微博控制树莓 ...

  3. 微信打通腾讯地图 提供地图API接口

    据悉,腾讯地图与微信全面打通并且开放后,可以向第三方微信公众账号提供一套基于地理位置的综合解决方案,包括录入网点位置.向用户发送位置.帮用户计算达到线路.查看街景等.届时,用户将可以通过微信公众账号直 ...

  4. 上海气象局 mysql_根据中国气象局提供的API接口实现天气查询

    中国气象局提供了三个天气查询的API接口: [1]http://www.weather.com.cn/data/sk/101190101.html [2]http://www.weather.com. ...

  5. 大厂对外提供的API接口入参命名规范

    最近查阅百度API接口时,发现接口文档中,参数明文居然是下划线格式,很疑惑.进一步查阅了 阿里开发平台.腾讯微信开发者平台, 对外api接口都是下划线命名,  为什么? java实体类的属性一般是遵从 ...

  6. 使用OLAMI自然语言开放平台提供的API接口制作自己的语音助手

    告诉你如何使用OLAMI自然语言理解开放平台API制作自己的智能对话助手 我们经常在电影中看到机器和人对答如流,随着越来越多自然语言开放平台的出现,IT爱好者制作一个自己的APP或者小玩具等逐渐可以变 ...

  7. Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰

    最近要做个课程设计,使用微博控制树莓派,树莓派再控制发光二极管的亮和灭,主要设计分两层,上层是用Java调用新浪微博API来实现对微博旳监听,当我的微博被回复时能够自动读取评论内容,并根据评论的指令内 ...

  8. 短视频SDK,直播SDK,美颜SDK_提供开放API接口

    现如今,美颜SDK已经成为图片与视频的必备功能,大部分互联网应用都会使用美颜SDK功能. 随着短视频开发.直播系统行业的发展,用户对视频拍照不仅仅只满足美白.磨皮.瘦脸等功能了,而是在此基础上增加了一 ...

  9. 最新JAVA调用新浪微博API之发微博(转)

    最近有个项目中需要调用微博的api发新微博,网上找了很多相关教程,遇到了很多坑.后来给官方发邮件询问才知道微博官方早在2017年3月份就调整了相关接口,取消了网上现有教程中的发送微博的接口(updat ...

  10. 最新JAVA调用新浪微博API之发微博

    最近有个项目中需要调用微博的api发新微博,网上找了很多相关教程,遇到了很多坑.后来给官方发邮件询问才知道微博官方早在2017年3月份就调整了相关接口,取消了网上现有教程中的发送微博的接口(updat ...

最新文章

  1. java 闭包与回调
  2. 安全攻防技能——安全基础概念
  3. Spring(十八):Spring AOP(二):通知(前置、后置、返回、异常、环绕)
  4. 计算平方根【牛顿迭代法】
  5. 编写一程序,输入一个字符串,查找该字符串中是否包含“abc”。
  6. python学习手记 pt1
  7. 理解metrics.classification_report
  8. 原始数据格式无法识别_虹膜识别技术优势明显 为何难以开启“刷眼“时代
  9. vue前台导出zip文件_在vue.js中使用JSZip实现在前端解压文件的方法
  10. centos7 wget无法解析主机域名的解决办法
  11. 前端获取文件的MD5值
  12. HTML期末大学生网页设计作业-我的家乡
  13. 关于“ VMware Workstation 16 此平台不支持虚拟化的Intel VT-x/EPT. 不使用虚拟化的Intel VT-x/EPT,是否继续?”的有关问题的总结解答
  14. html爱情意思,1一9爱情数字什么意思 1到9数字爱情含义
  15. U盘文件变成快捷方式的解决方案
  16. chan相关的知识点
  17. python大学生社团管理系统
  18. 【LaTex】基础语法框架快速入门教程——Tex live+TexStudio简要安装及使用教程
  19. 【系统故障】电脑有些网站上不去,比如爱奇艺、腾讯的网站。为什么?怎么解决?
  20. 做成功的CIO从反省自己开始

热门文章

  1. visio机柜设备图标_弱电各个设备安装设计大样图,可编辑!(CAD版本)
  2. 学习编程之前应该先学习哪些基础?
  3. 曲速未来 揭示:发现假EOS钱包窃取用户资金
  4. 【Pygame实战】怀旧经典—这款给娃的棋类游戏,你还记得叫什么吧?(一定要收藏)
  5. 软考中级-数据库系统工程师复习大纲
  6. python开发酷q插件gui_酷Q机器人插件开发笔记
  7. STM32F4 固件库下载
  8. 免费RDP报表工具试用感受
  9. Crossin先生的微信打飞机游戏(4)
  10. 几种常用的键盘钩子技术