调用微信公众平台API免费给自己发消息
素材:
- 注册 微信公众平台的订阅号
- 开通开发者中心功能,注册公众平台测试账号。获取到appID和appsecret
摘要:
- 使用Python 2.7
- 基于 微信‘公众平台测试账号’的appID和appsecret实现自动刷新 access_token,和(根据接收列表)发送消息的功能
代码:
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 03 21:24:18 2017@author: Selay
"""import requests
import json
import threading# 字典allusers用于存储 由 索引名和openID构成的键值对
# 微信关注‘测试号’时,会生成openID用于与对应微信账号通讯
# 索引名 是为了便于自己识别和管理而对openID起的别名
allusers = {'大大':'eXIuShYFO7tghjb_4YWA'}def usersto(users = None):if users == None:return allusers['大大']elif users == "All":return ','.join(set(allusers.values()))else:if isinstance(users,list):usersinfo = []for user in users:usersinfo.append(allusers[user])return ','.join(set(usersinfo))else:print "'users' must be a list!"returndef json_post_data_generator(content='Hi!你好!',users = None):msg_content = {}msg_content['content'] = contentpost_data = {}post_data['text'] = msg_contentpost_data['touser'] = "%s" % usersto(users)post_data['toparty'] = ''post_data['msgtype'] = 'text'post_data['agentid'] = '9'post_data['safe'] = '0'#由于字典格式不能被识别,需要转换成json然后在作post请求#注:如果要发送的消息内容有中文的话,第三个参数一定要设为Falsereturn json.dumps(post_data,False,False)# 需将此处的APPID,APPSECRET换为自己‘测试号管理’页面内显示的内容
def appInfos():APPID = "****************"APPSECRET = "******************"return (APPID,APPSECRET)def get_token_info():APPInfo = appInfos()r = requests.get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s" % APPInfo)#print "Accessing %s" %r.urljs = r.json()if "errcode" not in js:access_token = js["access_token"]expires_in = js["expires_in"]else:print "Can not get the access_token"print jsquit()return access_token,expires_inpost_url_freshing = ['']def post_url():access_token,expires_in = get_token_info()print "token expires_in:%s" % expires_intimer = threading.Timer((expires_in-200),post_url)timer.start()post_url_freshing[0] = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s' %access_tokenpost_url()def sender(text_str,user_lis = None):posturl = post_url_freshing[0]post_data = json_post_data_generator(content=text_str,users = user_lis)r = requests.post(posturl,data=post_data)result = r.json()if result["errcode"] == 0:print "Sent successfully"else:print result["errmsg"]if __name__ == "__main__":text_str = "你好"user_lis = Nonesender(text_str,user_lis)
附加信息:
- 微信公众号有多种,订阅号易申请,使用限制不多。申请地址https://mp.weixin.qq.com/ (自行百度 ‘申请微信订阅号’)
- 公众平台测试帐号:无需申请公众帐号、可在测试帐号中体验并测试微信公众平台所有高级接口。
- access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 (因此,access_token需要在2小时内刷新)
- 微信公众平台开发者文档:https://mp.weixin.qq.com/wiki/home/index.html
参考:
- 监控服务调用微信API如何给自己发告警信息
- 用python给微信公众号发消息
- 使用微信公众平台发送报警信息(Python版)
- 用Python实现Zabbix微信报警
- 关于Zabbix3版本发送微信报警配置
报错信息:
- out of response count limit hint: [0ns1wa0056ge20]:
在连续或累计发送20条消息或一段时间(48H)后,对方无回复,则会出现此错误;对方回复后,即可继续发送。
调用微信公众平台API免费给自己发消息相关推荐
- 使用gson和httpclient呼叫微信公众平台API
吐槽:微信api很无语.有一部分xml.有一部分json. 最近看如何调用微信公众平台json有关api更方便.终于找到了httpcliect和gson对. 假设你有一个更好的办法,请告诉我. 了解如 ...
- 【转】微信公众平台API
<?php /*** 微信公众平台API* * @author maojianlw@139.com* @link http://www.eaglephp.com*/ class WeixinCh ...
- 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...
下午ytkah在自己小博客搜索时看到有几篇文章图片显示不了,再访问一些网站时发现有些图片无法显示出来,显示"此图片来自微信公众号平台未经允许不可引用",如下图所示,这个应该是最近微 ...
- python 微信公众号网页接口调用_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
- 解决调用微信公众平台-获取草稿列表响应中文乱码问题
一.问题背景 在对接微信公众平台过程中,需要调用"获取草稿列表"的接口,其官网地址如下:https://developers.weixin.qq.com/doc/offiaccou ...
- 神卓互联内网穿透微信公众平台 API 实现微信登录
神卓互联是一家专注于内网穿透和互联网软件开发的公司,其提供的内网穿透服务和微信开发能够满足众多企业和个人的需求.本文将介绍神卓互联的内网传统微信开发服务. 在内网中使用微信开发具有一定的困难,因为微信 ...
- python连接微信接口开发教程_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
- python微信api_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
- python链接微信接口开发教程_Python调用微信公众平台接口操作示例
本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...
最新文章
- keil5函数 默认返回值_C++的返回值return
- [待总结]高频率vim命令
- mysql中事务的启动方式
- 测开之路二十:比较v1和v2
- zookeeper集群配置与配置文件详解
- 边缘计算在天猫精灵云应用上的落地实践
- 查看ie保存的表单_解决浏览器保存密码自动填充问题
- RocketMQ 实战-SpringBoot整合RocketMQ同步消息、异步消息、单向消息
- 毫米波雷达探测应用,智能人体感应雷达,家居雷达方案新体验
- word单独编辑或者删除某一页的页眉
- Ubuntu 20.04换阿里源
- GT传奇3服务器架设全攻略~!(新手篇)(转)
- 页面加载缓冲的login
- WebRTC技术详解
- 本地idea连接Linux上Redis出现RedisConnectionException: Unable to connect to xxx.xxx.xxx.xxx:6379的问题
- 唯样商城:电路板上的字母都代表什么意思?
- 众包置信度:改进众包数据标记的贝叶斯推断
- 计算机是如何执行程序的
- 2021 广东省程序设计竞赛(GDCPC)
- 大姨妈在运营方面积累的一些经验(3点)
热门文章
- Python爬虫+BI分析,做一份酷炫的A股牛市可视化!
- uniapp 苹果支付注意事项(前端)
- 建议收藏 | H.265编码原理入门
- 已知总图的边和子图顶点,判断子图连通性
- Java并发知识点快速复习手册(下)
- Ubuntu20.04配置好文
- 题解 P4766 【[CERC2014]Outer space invaders】
- 2022-2028中国干墙砂光机市场现状研究分析与发展前景预测报告
- HighNewTech:展望未来之十大颠覆技术
- 大华服务器没进系统,交换机与大华服务器链路聚合出问题