国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
Python-Flask微信小程序登錄流程詳解及后臺(tái)實(shí)現(xiàn)

文章目錄

登錄流程圖及個(gè)人理解

1、前端將由wx.login()方法獲取到的用戶臨時(shí)登錄憑證code(只能使用一次)傳給后臺(tái)服務(wù)器(即登錄接口)
2、后臺(tái)利用微信小程序的appid、appsecret以及前端傳過(guò)來(lái)的code以GET請(qǐng)求方式調(diào)用微信提供的相關(guān)API

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 

得到用戶OpenID(關(guān)于當(dāng)前小程序的唯一標(biāo)識(shí))和會(huì)話密鑰session_key(對(duì)用戶數(shù)據(jù)進(jìn)行加密簽名的密鑰)
3、出于安全考慮,微信官方要求開(kāi)發(fā)者不能將會(huì)話密鑰下發(fā)到小程序,所以要想確保用戶登錄的唯一性(即知道登錄的用戶對(duì)應(yīng)的是數(shù)據(jù)庫(kù)中哪一個(gè)OpenID和會(huì)話密鑰)就需要結(jié)合OpenID和session_key自定義登錄態(tài)(例:可以在數(shù)據(jù)庫(kù)中為每一個(gè)用戶加一個(gè)自增的UserID字段與OpenID、session_key對(duì)應(yīng))
4、前端調(diào)用后臺(tái)登錄接口時(shí)便將自定義的登錄態(tài)(例:對(duì)應(yīng)UserID)返回,前端在需要對(duì)用戶相關(guān)數(shù)據(jù)進(jìn)行操作時(shí)便可通過(guò)得到的登錄態(tài)對(duì)與之對(duì)應(yīng)的用戶數(shù)據(jù)進(jìn)行操作

登錄接口源碼

from flask import Flaskimport requests, jsonapp = Flask(__name__)@app.route('/login', methods = ['POST'])def login():    data = json.loads(request.get_data().decode('utf-8')) #將前端Json數(shù)據(jù)轉(zhuǎn)為字典    appID = 'APPID' #開(kāi)發(fā)者關(guān)于微信小程序的appID    appSecret = 'SECRET' #開(kāi)發(fā)者關(guān)于微信小程序的appSecret    code = data['code'] #前端POST過(guò)來(lái)的微信臨時(shí)登錄憑證code    req_params = {        'appid': appID,        'secret': appSecret,        'js_code': code,        'grant_type': 'authorization_code'    }    wx_login_api = 'https://api.weixin.qq.com/sns/jscode2session'    response_data = requests.get(wx_login_api, params=req_params) #向API發(fā)起GET請(qǐng)求    data = response_data.json()    openid = data['openid'] #得到用戶關(guān)于當(dāng)前小程序的OpenID    session_key = data['session_key'] #得到用戶關(guān)于當(dāng)前小程序的會(huì)話密鑰session_key	'''	下面部分是通過(guò)判斷數(shù)據(jù)庫(kù)中用戶是否存在來(lái)確定添加或返回自定義登錄態(tài)(若用戶不存在則添加;若用戶存在,我這里返回的是添加用戶時(shí)生成的自增長(zhǎng)字段UserID)	'''    if openid and session_key:        '''    	在數(shù)據(jù)庫(kù)用戶表查詢(查找得到的OpenID在數(shù)據(jù)庫(kù)中是否存在)    	SQLalchemy語(yǔ)句:    	user_info = User.query.filter(User.OpenID == openid).first()         '''        if user_info is None: #不存在	        '''	        將得到的OpenID添加到數(shù)據(jù)庫(kù)得用戶表	        SQLalchemy語(yǔ)句:	        user_info = User(OpenID = openid)	        db.session.add(user_info)	        db.session.commit()	        '''        return json.dumps(user_info.UserID, ensure_ascii = False) #將UserID轉(zhuǎn)為Json返回    return "code失效或不正確"if __name__ == '__main__':	app.run(host = '0.0.0.0', port = 80)	
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
關(guān)于小程序登錄時(shí)獲取openId和unionId走過(guò)的坑
php(ThinkPHP)實(shí)現(xiàn)微信小程序的登錄過(guò)程
微信小程序與django
Flask 微信卡券小項(xiàng)目:從開(kāi)發(fā)到上線
JS
利用微信服務(wù)號(hào)獲取用戶基本信息的方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服