flask开发微信小程序,python的flask微服务
文章目录登录流程图和个人理解登录界面源代码。
登录流程图和个人理解
1.前端将通过wx.login()方法获得的临时登录凭证码(只能使用一次)发送给后台服务器(即登录界面)。
2.后台利用微信小程序的appid、appsecret和前端传来的代码,通过GET请求调用微信提供的相关API。
https://api.weixin.qq.com/sns/jscode2session?appid=appid secret=secret js _ code=jscode grant _ type=authorization _ code获取用户的OpenID(关于当前小程序的唯一标识)和会话密钥session_key(用于对用户数据进行加密和签名的密钥)
3.出于安全考虑,微信官方要求开发者不能向小程序发送会话密钥,所以为了保证用户登录的唯一性(也就是要知道数据库中哪些OpenID和会话密钥对应登录的用户),需要结合OpenID和session_key自定义登录状态(比如可以在数据库中增加一个自增UserID字段来对应OpenID和session_key)。
4.前端调用后台登录接口时,会返回用户自定义的登录状态(例如对应的UserID)。当前端需要操作用户相关数据时,可以通过获取的登录状态操作相应的用户数据。
登录界面源代码来自FLASK IMPORT FLASK IMPORT REQUESTS,JSON APP=FLASK(_ _ name _ _)@ APP . route(/log in ,Methods=[ post ])def log in():data=JSON . loads(request . get _ data()。解码( UTF-8 )#将前端Json数据转换成字典appID=APPID # Appid app secret关于微信小程序= secret # app secret code=data[ code ]#来自前端的微信临时登录凭证POST code req _ Params={ appID :appID, secret: appSecret, js_code: code, grant _ type : authorization _ code } wx _ log in _ API= https://API . weixin . QQ . com/SNS/jscode 2s下面部分是通过判断数据库中是否存在该用户来决定是添加还是返回自定义登录状态(如果用户不存在则添加;如果用户存在,我这里返回的是自增长字段userid) if OpenID和Session _ key: 查询数据库用户表(找到的OpenID是否存在于数据库中)SQLalchemy语句:user _ info=user . query . filter(user . OpenID==OpenID)。first() 如果user _ info为none: #不存在 将获得的OpenID添加到数据库的用户表中。SQLalchemy语句:user _ info=user(OpenID=OpenID)db . session . add(user _ info)db . session . commit() return JSON . dumps(user _ info。userid,guarantee _ ascii=false) #将UserID转换为Json并返回“代码无效或不正确的代码”if _ _ name _ _= _ _ main _ :app . run(host= 0.
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。