📄 小程序登录接入使用
内部资料,请扫码登录
pigcloud
# ① pigx 配置小程序信息
注意维护SQL 中的小程序的 client_id 、client_secret 为实际测试的小程序信息
INSERT INTO `sys_social_details`(`id`, `type`, `remark`, `app_id`, `app_secret`, `redirect_url`, `ext`, `create_by`, `update_by`, `create_time`, `update_time`, `del_flag`, `tenant_id`) VALUES (1600713275467575297, 'MINI', '小程序', 'wx6832be859d0e1cf5', '6a93a55bbc56ae7f5808b0863aab820c', NULL, NULL, 'admin', ' ', '2022-12-08 12:45:59', '2022-12-08 04:45:59', '0', 1);
# 小程序流程设计说明
- 小程序端
wx.login
返回 code 调用 pigx 获取 token。 - 若 pigx 返回
200 & access_token
, 小程序端保存access_token
,调用服务端 API 使用。 - 若 pigx 返回
401
则未绑定,跳转绑定功能。- 使用短信验证码模式登录获取 token
- 小程序端再次
wx.login
获取 code
- 小程序端再次
- 调用绑定接口,实现用户&&openid 绑定
# 小程序绑定 pigx
为什么要这么处理? 这是最安全的方法,不要使用 pigx 直接开放对外接口绑定 !
手机号已绑定 pigx 后台 | pigx> 权限管理 > 用户管理 > 用户信息维护
# 小程序自动授权登录
获取小程序授权 code 调用 pigx 接口获取 token
login: function(){
var self = this;
wx.login({
success(res) {
wx.request({
url: 'http://localhost:8080/auth/oauth2/token?grant_type=mobile&mobile=MINI@' + res.code + '&code='+res.code,
method: 'post',
header: {
Authorization: 'Basic c29jaWFsOnNvY2lhbA==',
},
success(res) {
console.log(res);
if (res.statusCode === 401) {
console.log(res.data);
wx.showToast({
title: '用户未绑定,请使用 sys_user 表存在的手机号进行绑定',
})
wx.navigateTo({
url: '../bind/bind',
});
} else {
self.setData({
username: res.data.username,
});
}
},
});
},
});
}
# 获取验证码
getSmsCode: function(){
wx.request({
url: 'http://localhost:8080/admin/mobile/' + this.data.mobile,
method: 'get',
success(res) {
//测试环境报文直接返回了短信验证码,生产环境服务端要接短信通道下发
console.log(res)
}
})
},
# 验证码登录获取 token 并进行绑定
如何 获取微信小程序授权 code (opens new window)
bind: function(){
wx.request({
url: 'http://localhost:8080/auth/oauth2/token?mobile=SMS@'+this.data.mobile+'&code='+this.data.code+'&grant_type=mobile',
method: 'post',
header: {
'Authorization': 'Basic cGlnOnBpZw=='
},
success(res) {
var token = res.data.access_token
wx.login({
success(res){
wx.request({
url: 'http://localhost:8080/admin/social/bind?state=MINI&code=' + res.code,
method: 'post',
header: {
'Authorization': 'Bearer '+token
},
success(r) {
console.log(r)
wx.showToast({
title: '绑定成功,注意观察 sys_user 表 mini_openid 字段是否更新',
})
}
})
}
})
}
})
}