from flask_sqlalchemy import SQLAlchemy
from apps import db, app
from apps.sdk.wechat import WXSDK_jscode2session, WXSDK_userinfo
from apps.module import LoginSessionCache, Userdata
def login(request):
'''获取前端传回来的code 并判断是否存在 如不存在则返回400'''
code = request.json.get('code')
if code == None:
return 400, '参数不存在', ''
else:
try:
'''获取用户的openid 和 session_key'''
# 获取用户openid和session_key
wechet_data = WXSDK_jscode2session(request.json['code'])
openid, session_key = wechet_data['openid'], wechet_data['session_key']
# 获取用户信息
wechet_userdata = WXSDK_userinfo(openid, session_key)
'''登录逻辑(更新和新建)'''
if LoginSessionCache.query.filter_by(openid=openid).first():
'''存在就更新session_key'''
db.session.query(LoginSessionCache).filter(LoginSessionCache.openid == openid).update(
{LoginSessionCache.session_key: session_key})
'''更新用户数据'''
db.session.query(Userdata).filter(Userdata.openid == openid).update({
Userdata.username: wechet_userdata['nickName'],
Userdata.avatar: wechet_userdata['avatarUrl'],
Userdata.gender: wechet_userdata['gender'],
Userdata.country: wechet_userdata['country'],
Userdata.province: wechet_userdata['province'],
Userdata.city: wechet_userdata['city']
})
return 200, '成功', {"openid": openid, "session_key": session_key}
else:
'''不存在就创建登录记录写入id和sessionkey'''
LoginSessionCache(openid, session_key)
'''创建用户关联数据表'''
Userdata(openid=openid,
username=wechet_userdata['nickName'],
avatar=wechet_userdata['avatarUrl'],
gender=wechet_userdata['gender'],
country=wechet_userdata['country'],
province=wechet_userdata['province'],
city=wechet_userdata['city'])
return 200, '成功', {"openid": openid, "session_key": session_key}
except:
return 500, '内部错误', ''
电科_银尘
- 粉丝: 1w+
- 资源: 163
最新资源
- 11月美宝莲专卖店店内海报 店内海报完稿310mmX360mm-op.ai
- 基于 Java 实现的24点卡牌游戏课程设计
- 基于ssm台球俱乐部管理系统 框架html + css + jquery + jsp + java + ssm + MySQL 用户类型 管理员 admin 123456 普通用户 002 0
- 纸中世界-跳跃游戏.sb3
- 通过示例在 Python 中解释 SOLID 原则 .zip
- 11月美宝莲专卖店背柜完稿740mmX400mm
- 基于ssm台球俱乐部管理系统 框架html + css + jquery + jsp + java + ssm + MySQL
- 通过 stdio 进行简单(但高效)的进程间通信,从 Node.js 运行 Python 脚本.zip
- STM32F030F4P6-LOCK+OLED
- 深度学习数据集详解与选用指南
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈