欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python代碼實(shí)現(xiàn)掃碼關(guān)注公眾號(hào)登錄的實(shí)戰(zhàn)

 更新時(shí)間:2021年11月01日 11:20:38   作者:冰風(fēng)漫天  
本文主要介紹了python代碼實(shí)現(xiàn)掃碼關(guān)注公眾號(hào)登錄的實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

大致思路:調(diào)用微信帶參數(shù)二維碼接口生成二維碼,前端顯示二維碼同時(shí)于服務(wù)器進(jìn)行長(zhǎng)鏈接通信,監(jiān)控關(guān)注狀態(tài),如果有對(duì)應(yīng)的場(chǎng)景碼參數(shù)的關(guān)注,則進(jìn)行登錄操作。

下面是服務(wù)示意圖

主要代碼實(shí)現(xiàn):

獲取二維碼部分

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)

這個(gè)access_token的有效期是兩小時(shí),所以建議寫(xiě)個(gè)定時(shí)任務(wù),每一小時(shí)執(zhí)行一下,存到redis,用的時(shí)候redis取一下。

2.取ticket

my_scene_str = 'xxxxx'  # 場(chǎng)景碼可以做個(gè)key放到redis里并設(shè)置一個(gè)和二維碼一樣的過(guò)期時(shí)間 
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.取二維碼圖片(這里返回圖片的同時(shí)把場(chǎng)景碼也一并返回給前端,這樣如果前端用輪詢(xún)獲取關(guān)注狀態(tài)的話(huà)就可以不使用長(zhǎng)鏈接了)

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

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

獲取關(guān)注狀態(tài)值

方法一:使用場(chǎng)景碼輪詢(xún)
發(fā)送請(qǐng)求輪詢(xún)md5_user_key
方法二:使用場(chǎng)景碼建立長(zhǎng)鏈接連接,等待服務(wù)器推送
flask建議使用socketio

解析微信服務(wù)器報(bào)文

新關(guān)注用戶(hù)掃碼報(bào)文內(nèi)容

<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>

老用戶(hù)掃碼報(bào)文內(nèi)容

<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:公眾號(hào)的id
FromUserName:用戶(hù)的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)  # 新關(guān)注用戶(hù)掃碼
    if dic.get('Event') == 'SCAN':
        parse_scan(dic)  # 已經(jīng)關(guān)注用戶(hù)掃碼

使用openid獲取關(guān)注的微信用戶(hù)信息

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()

返回參數(shù)

{'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'}

到此這篇關(guān)于python代碼實(shí)現(xiàn)掃碼關(guān)注公眾號(hào)登錄的實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)python 掃碼關(guān)注公眾號(hào)登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python函數(shù)返回多個(gè)值的示例方法

    python函數(shù)返回多個(gè)值的示例方法

    這篇文章主要介紹了python函數(shù)返回多個(gè)值的方法,大家參考使用
    2013-12-12
  • python networkx 根據(jù)圖的權(quán)重畫(huà)圖實(shí)現(xiàn)

    python networkx 根據(jù)圖的權(quán)重畫(huà)圖實(shí)現(xiàn)

    這篇文章主要介紹了python networkx 根據(jù)圖的權(quán)重畫(huà)圖實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python消費(fèi)kafka數(shù)據(jù)批量插入到es的方法

    python消費(fèi)kafka數(shù)據(jù)批量插入到es的方法

    今天小編就為大家分享一篇python消費(fèi)kafka數(shù)據(jù)批量插入到es的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python設(shè)計(jì)模式之單例模式實(shí)例

    Python設(shè)計(jì)模式之單例模式實(shí)例

    這篇文章主要介紹了設(shè)計(jì)模式中的單例模式Python實(shí)例,需要的朋友可以參考下
    2014-04-04
  • python pillow模塊使用方法詳解

    python pillow模塊使用方法詳解

    這篇文章主要介紹了python pillow模塊使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 實(shí)現(xiàn)python版本的按任意鍵繼續(xù)/退出

    實(shí)現(xiàn)python版本的按任意鍵繼續(xù)/退出

    本文給大家簡(jiǎn)單介紹了在windows以及l(fā)inux下實(shí)現(xiàn)python版本的按任意鍵繼續(xù)/退出功能,非常的簡(jiǎn)單實(shí)用,linux下稍微復(fù)雜些,有需要的小伙伴可以參考下
    2016-09-09
  • python 使用 requests 模塊發(fā)送http請(qǐng)求 的方法

    python 使用 requests 模塊發(fā)送http請(qǐng)求 的方法

    本文分步驟給大家介紹了python 使用 requests 模塊發(fā)送http請(qǐng)求 的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-12-12
  • 使用python繪制二元函數(shù)圖像的實(shí)例

    使用python繪制二元函數(shù)圖像的實(shí)例

    今天小編就為大家分享一篇使用python繪制二元函數(shù)圖像的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python數(shù)據(jù)分析Pandas?Dataframe排序操作

    Python數(shù)據(jù)分析Pandas?Dataframe排序操作

    這篇文章主要介紹了Python數(shù)據(jù)分析Pandas?Dataframe排序操作,數(shù)據(jù)的排序是比較常用的操作,DataFrame?的排序分為兩種,一種是對(duì)索引進(jìn)行排序,另一種是對(duì)值進(jìn)行排序,接下來(lái)就分別都介紹一下,需要的小伙伴可以參考一下
    2022-05-05
  • Pycharm debug調(diào)試時(shí)帶參數(shù)過(guò)程解析

    Pycharm debug調(diào)試時(shí)帶參數(shù)過(guò)程解析

    這篇文章主要介紹了Pycharm debug調(diào)試時(shí)帶參數(shù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論