本文主要介绍登录模块结合微信登录免费版的开发。
首先准备一个微信测试号。地址可在本站的导航-微信API-测试号 找到。微信登录扫描,开启测试号。
记录你的appid, appsecret 。
在接口中找到 网页服务-网页账号-网页授权获取用户基本信息 ,修改授权回调域名为你的域名,比如 www.yf2017.top 。
表设计-user
uid
用户ID
uname
用户名
upwd
密码
unionid
微信用户基本信息接口中的unionid
sql
create table tuser(
uid int auto_increment primary key comment ‘用户ID’,
uname varchar(30) not null comment ‘用户名’,
upwd varchar(200) not null comment ‘密码’,
unionid varchar(200) comment ‘用户微信unionid’
)comment ‘用户登录信息’;
表设计-user_nonce
noncestr
随机码
unionid
微信用户基本信息接口中的unionid
sql
create table tuser_nonce(
noncestr varchar(200) not null comment ‘随机码’,
unionid varchar(200) comment ‘用户微信unionid’
)comment ‘用户登录状态’;
流程设计
在登录页面 login.html 引入qrcode.js, 生成一个二维码指向后台一个页面wx.html ,该地址带一个唯一标识,比如timestamp+随机数。
用户点击微信登录时,生成标识码,传入 wx.html
$.post wx.html noncestr=xxxx
,并且每1s查询 user_nonce 根据 noncestr查询登录状态。
wx.html执行插入,在user_nonce表存入一条记录。
定时任务
根据appid, appsecret 每2小时刷新 access_token。
微信API调用
state传入 noncestr
用户授权后,微信传入code, state, 后台根据code获取用户信息,更新 user_nonce 表的记录。
登录页 login.html 查询到 user_nonce表的 unionid, 关联查询 user 表,查询到记录后设置session,
login.html跳转到管理页面 manage.html
到此,功能开发完成。