1.申请一个小程序,申请地址:传送门
2.仔细阅读小程序的用户授权登陆官方文档: 《用户授权登陆的流程》
3.仔细阅读微信用户数据解密的相关文档: 《用户数据解密说明文档》
在小程序后台配置好相应的后端请求地址,路径是:开发---->开发设置,如图
5.小程序如果需要做多个小程序的打通,还需要在微信开放平台绑定到开发者账号下面, 如果不需要union_id请忽略
6.服务端准备一个用户授权的接口,假设接口链接为http://test.dev.com/user/authorization,此接口接受如下参数
· code:微信登陆接口返回的登陆凭证,用户获取session_key
· iv:微信小程序登陆接口返回的向量,用于数据解密
· encrypted_data : 微信获取用户信息接口的返回的用户加密数据,用于后端的接口解析
· signature加密数据
接口返回的数据如下
{
"errcode": 200,
"msg": "SUCCESS",
"data": {
"uid": 34098,
"unionid": "xxx",
}
}
6.建表
1)用户表,其中比较重要的字段是union_id,因为我们是有多个小程序和公众号,因此使用这个来区分唯一的用户编号
DROP TABLE IF EXISTS `jz_wxa_user`;
CREATE TABLE `jz_wxa_user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` bigint(18) DEFAULT NULL,
`openid` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'openid',
`user_name` varchar(100) CHARACTER SET utf8mb4 DEFAULT '',
`nick_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '用户昵称',
`sex` enum('0','1') CHARACTER SET utf8 DEFAULT '1' COMMENT '性别',
`avatar` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用户头像',
`province` varchar(100) CHARACTER SET utf8 DEFAULT NULL COMMENT '省份',
`city` varchar(100) CHARACTER SET utf8 DEFAULT NULL COMMENT '城市',
`country` varchar(100) CHARACTER SET utf8 DEFAULT NULL COMMENT '国家',
`wx_union_id` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '公众平台的唯一id',
`from_url` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '来源url',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`from_appid` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT 'wx95fc895bebd3743b' COMMENT '来源appid',
`wx_header` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '微信头像',
`gh_openid` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '微信公众号openid',
`phone` varchar(30) CHARACTER SET utf8 DEFAULT '' COMMENT '手机号码',
PRIMARY KEY (`id`),
KEY `idx_uid_union_id` (`uid`,`wx_union_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
实现步骤
用户授权时序图