亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用python代碼實現掃碼關注公眾號登錄

發布時間:2021-11-01 13:40:19 來源:億速云 閱讀:311 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么使用python代碼實現掃碼關注公眾號登錄”,在日常操作中,相信很多人在怎么使用python代碼實現掃碼關注公眾號登錄問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用python代碼實現掃碼關注公眾號登錄”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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

主要代碼實現:

獲取二維碼部分

1.取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取一下。

2.取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']

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

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

解析微信服務器報文

新關注用戶掃碼報文內容

<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 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獲取關注的微信用戶信息

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代碼實現掃碼關注公眾號登錄”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南岸区| 澄江县| 武冈市| 石家庄市| SHOW| 饶阳县| 达拉特旗| 军事| 澄江县| 额尔古纳市| 黔西| 民权县| 北宁市| 连山| 孝昌县| 克东县| 凤凰县| 关岭| 鄂尔多斯市| 长泰县| 遵义市| 太谷县| 江口县| 黔东| 彭阳县| 高州市| 栖霞市| 犍为县| 奈曼旗| 东兰县| 开江县| 嘉禾县| 白城市| 三台县| 株洲县| 宜昌市| 文成县| 建阳市| 沙雅县| 扎囊县| 龙游县|