iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么使用python代码实现扫码关注公众号登录
  • 414
分享到

怎么使用python代码实现扫码关注公众号登录

2023-06-25 12:06:55 414人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“怎么使用python代码实现扫码关注公众号登录”,在日常操作中,相信很多人在怎么使用Python代码实现扫码关注公众号登录问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用python代

这篇文章主要介绍“怎么使用python代码实现扫码关注公众号登录”,在日常操作中,相信很多人在怎么使用Python代码实现扫码关注公众号登录问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用python代码实现扫码关注公众号登录”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

大致思路:调用微信带参数二维码接口生成二维码,前端显示二维码同时于服务器进行长链接通信,监控关注状态,如果有对应的场景码参数的关注,则进行登录操作。

主要代码实现:

获取二维码部分

取access_token

app_id = 'xxxx'app_secret = 'xxxxxx'url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}'.fORMat(app_id, app_secret)resp = requests.get(url)rs = util.get_redis_con()access_token = resp.JSON()['access_token']print(access_token)

这个access_token的有效期是两小时,所以建议写个定时任务,每一小时执行一下,存到Redis,用的时候redis取一下。

取ticket

my_scene_str = 'xxxxx'  # 场景码可以做个key放到redis里并设置一个和二维码一样的过期时间 url = 'Https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}'.format(access_token)data = {        "expire_seconds": 604800,        "action_name": "QR_STR_SCENE",        "action_info": {"scene": {"scene_str": md5_user_key}}}resp = requests.post(url, json=data)ticket = resp.json()['ticket']

取二维码图片(这里返回图片的同时把场景码也一并返回给前端,这样如果前端用轮询获取关注状态的话就可以不使用长链接了)

url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' + ticketresp = requests.get(url)img = base64.b64encode(resp.content).decode('ascii')print(img)

这个里取到的图片用base64返回给前端,前端使用src="data:image/png;base64,"+img 就可以显示了

获取关注状态值

方法一:使用场景码轮询
发送请求轮询md5_user_key
方法二:使用场景码建立长链接连接,等待服务器推送
flask建议使用Socketio

解析微信服务器报文

新关注用户扫码报文内容

<xml><ToUserName><![CDATA[xxxxxxxxxxxxx]]></ToUserName><FromUserName><![CDATA[xxxxxxxxxxx]]></FromUserName><CreateTime>1609128953</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[subscribe]]></Event><EvenTKEy><![CDATA[xxxxxx]]></EventKey><Ticket><![CDATA[xxxxxxxx]]></Ticket></xml>

老用户扫码报文内容

<xml><ToUserName><![CDATA[xxxxxxxxxxxx]]></ToUserName><FromUserName><![CDATA[xxxxxxxxxxxxx]]></FromUserName><CreateTime>1609127524</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[SCAN]]></Event><EventKey><![CDATA[xxxxxxxxxxxxxx]]></EventKey><Ticket><![CDATA[xxxxxxxxxxxxxxxxxxx]]></Ticket></xml>

ToUserName:公众号的id
FromUserName:用户的openid 

import xml.etree.ElementTree as ETroot = ET.fromstring(request.data.decode('utf-8'))dic = {}for x in root:    dic[x.tag] = x.textif dic.get('MsgType') == 'event':    if dic.get('Event') == 'subscribe':        parse_subscribe(dic)  # 新关注用户扫码    if dic.get('Event') == 'SCAN':        parse_scan(dic)  # 已经关注用户扫码

使用openid获取关注的微信用户信息

url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={access_token}&openid={open_id}&lang=zh_CN"resp = requests.get(url.format(access_token=access_token, open_id=open_id))resp.encoding = 'utf-8'return resp.json()

返回参数

{'subscribe': 1, 'openid': 'xxxxxxxxxxxxxxxxxxx', 'nickname': 'xxx', 'sex': 1, 'language': 'zh_CN', 'city': 'xx', 'province': 'xx',  'country': 'xx',  'headimgurl': 'http://thirdwx.qloGo.cn/mmopen/xxxxxxxxxxxxxxxxxx/xxx',  'subscribe_time': 1609128953,  'uNIOnid': 'xxxxxxxxxxxxxxxxx',  'remark': '',  'groupid': 0,  'tagid_list': [],  'subscribe_scene': 'ADD_SCENE_QR_CODE',  'qr_scene': 0,  'qr_scene_str': 'xxxxxxxxxxxxxxxxxxxx'}

到此,关于“怎么使用python代码实现扫码关注公众号登录”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么使用python代码实现扫码关注公众号登录

本文链接: https://www.lsjlt.com/news/304519.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作