python如何实现微信小程序用户登录,模板推送

  介绍

这篇文章主要介绍了python如何实现微信小程序用户登录,模板推送,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

<强> python实现微信小程序的用户登录

小程序可以通过官方提供的登录邓丽来获取用户身份的标示,具体文档可以参考官方文档,通过流程时序可以看的到,对于需要和前端配合的服务端开发,主要实现的就是通过小程序提供的代码换取用户的openid和session_key,并用换取到的openid和secret_key作为自定义的登录态。分析后得知,作为小程序后端的开发,主要实现以下几部分内容:

<李>

提供一个HTTP接口,供小程序方使用,传递代码;

<李>

换取用户身份标识;

<李>

维护一个自定义的登录态;

<李>

需要存储用户的openid,以备后续使用。

1。提供给小程序一个HTTP接口,接口而使用龙卷风框架

简化阐述,代码没有做异常处理

class  LoginHandler (RequestHandler):   帖子,def (自我):=,,req_data  json.loads (self.request.body)=,,js_code  req_data.get (& # 39; js_code& # 39;)   ,   ,#开始换取用户的信息=,,user_info  get_user_info (js_code=js_code)=,,openid  user_info [& # 39; openid # 39;】=,,session_key  user_info [& # 39; session_key& # 39;】=,,user_uuid  str (uuid.uuid4()), #,暴露给小程序端的用户标示   ,   ,#用来维护用户的登录态   ,User.save_user_session (   ,,user_uuid=user_uuid,   ,,openid=openid,   ,,session_key=session_key   ,)   ,   ,#微信小程序不能设置饼干,,把用户信心存在了头中   ,self.set_header(& # 39;授权# 39;,,user_uuid)   ,#存储用户信息   ,User.save_user_info (open_id=openid)   之前,self.set_status (204)

2。换取用户身份标示,直接使用请求包请求微信的相关接口,获取数据

def  get_user_info (js_code):      ,req_params =, {   ,“appid": & # 39; app_id # 39;,, #,小程序ID   ,“secret": & # 39;秘密# 39;,,#,小程序,秘密   ,“js_code": js_code,   ,“grant_type": & # 39; authorization_code& # 39;   }大敌;=,,req_resutl  requests.get (& # 39; https://api.weixin.qq.com/sns/jscode2session& # 39;,, params=req_params,超时=3,,验证=False)   以前,return  req_result.json ()

3。维护一个自定义的登录态,使用复述,

user_redis =, StrictRedis.from_url(& # 39;复述,//localhost: 6379 & # 39;)      class 用户(对象):   ,REDIS_EXPIRES =, 7, *, 24, *, 60, * 60   ,   ,@classmethod   ,def  save_user_session (cls, user_uuid,, openid,, session_key):   ,user_session_value =, {   ,& # 39;openid # 39;: openid,   ,& # 39;session_key& # 39;: session_key   ,}=,user_session_key  & # 39;我们:& # 39;,+ user_uuid   ,with  user_redis.pipeline(事务=False), as 管:   ,pipe.hmset (user_session_key, user_session_value)   ,pipe.expire (user_session_key, cls.REDIS_EXPIRES)   之前,pipe.execute ()

4。存储用户信息,以备后用,ORM使用SQLAlchemy

得到sqlalchemy  import  create_engine   得到sqlalchemy.ext.declarative  import  declarative_base      #,mysql 相关设置   时间=engine  create_engine (& # 39; mysql://根:pwd@localhost/wechat& # 39;)   时间=conn  engine.connect ()      时间=Base  declarative_base ()   Base.metadata.reflect(引擎)   tables =Base.metadata.tables      class 用户(对象):=,table 表[& # 39;用户# 39;】      ,@classmethod   ,def  save_user_info (cls, open_id):   ,#存储用户信心=,,sql  cls.table.insert () . values (open_id=open_id)   之前,conn.execute (sql)

sql语句

CREATE  TABLE “用户”(   ,“id”int (20), unsigned  NOT  NULL  AUTO_INCREMENT,   ,‘open_id varchar (32), NOT  NULL  COMMENT  & # 39;用户,open_id& # 39;   ,‘created_at timestamp  NULL  DEFAULT  CURRENT_TIMESTAMP  COMMENT  & # 39;创建时间& # 39;,   ,‘updated_at timestamp  NULL  DEFAULT  CURRENT_TIMESTAMP 提醒UPDATE  CURRENT_TIMESTAMP  COMMENT  & # 39;更新时间& # 39;,   ,PRIMARY  KEY  (id),   ,KEY “idx_oid”, (“open_id”)   ),引擎=InnoDB  default  CHARSET=utf8mb4;

模板:通过代码发送微信模板消息

python如何实现微信小程序用户登录,模板推送