一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python代碼實現掃碼關注公眾號登錄的實戰

python代碼實現掃碼關注公眾號登錄的實戰

2022-02-22 00:10冰風漫天 Python

本文主要介紹了python代碼實現掃碼關注公眾號登錄的實戰,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

大致思路:調用微信帶參數二維碼接口生成二維碼,前端顯示二維碼同時于服務器進行長鏈接通信,監控關注狀態,如果有對應的場景碼參數的關注,則進行登錄操作。

下面是服務示意圖

python代碼實現掃碼關注公眾號登錄的實戰

主要代碼實現:

獲取二維碼部分

1.取access_token

?
1
2
3
4
5
6
7
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取一下。

2.取ticket

?
1
2
3
4
5
6
7
8
9
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']

3.取二維碼圖片(這里返回圖片的同時把場景碼也一并返回給前端,這樣如果前端用輪詢獲取關注狀態的話就可以不使用長鏈接了)

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

這個里取到的圖片用base64返回給前端,前端使用src="data:image/png;base64,"+img 就可以顯示了

獲取關注狀態值

方法一:使用場景碼輪詢
發送請求輪詢md5_user_key
方法二:使用場景碼建立長鏈接連接,等待服務器推送
flask建議使用socketio

解析微信服務器報文

新關注用戶掃碼報文內容

?
1
2
3
4
5
6
7
8
9
<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>

老用戶掃碼報文內容

?
1
2
3
4
5
6
7
8
9
<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 

?
1
2
3
4
5
6
7
8
9
10
11
import xml.etree.ElementTree as ET
root = ET.fromstring(request.data.decode('utf-8'))
dic = {}
for x in root:
    dic[x.tag] = x.text
 
if dic.get('MsgType') == 'event':
    if dic.get('Event') == 'subscribe':
        parse_subscribe(dic)  # 新關注用戶掃碼
    if dic.get('Event') == 'SCAN':
        parse_scan(dic)  # 已經關注用戶掃碼

使用openid獲取關注的微信用戶信息

?
1
2
3
4
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()

返回參數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{'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代碼實現掃碼關注公眾號登錄的實戰的文章就介紹到這了,更多相關python 掃碼關注公眾號登錄內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/7024324555476828168

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色综合图片 | 四虎comwww最新地址 | 无套暴躁白丝秘书 | 肉肉小说在线阅读 | 茄子视频懂你更多apl | 日本福利视频网站 | 思思99热久久精品在2019线 | 欧美国产高清 | 办公室的秘密在线观看 | 国产第一福利 | 极品虎白女在线观看一线天 | 奇米成人 | 欧美另类z0zxi | 亚洲一区二区日韩欧美gif | 亚洲性久久久影院 | 91理论片午午伦夜理片久久 | 国产成人手机在线好好热 | 好爽视频 | 日韩毛片免费 | 高肉h护士办公室play | 无遮挡激情 | 国产大乳美女挤奶视频 | 99精品在线 | 91久久99热青草国产 | 亚洲第一区欧美日韩精品 | 爱色v| caoporm国产精品视频免费 | 我的青梅竹马是消防员2季未增删免费 | 91成人啪国产啪永久地址 | 婷婷综合在线 | 美女的让男人桶爽30分钟的 | 日本精品久久久久久久久免费 | 日韩精品免费一区二区三区 | 日本免费不卡在线一区二区三区 | 国产aaa伦理片| 精品一区二区三区在线视频观看 | 亚洲色图图 | 欧美专区在线观看 | 国产精品色图 | 免费观看国产精品 | 波多野结衣178部中文字幕 |