当前位置:网站首页>微信小程序获取用户手机号码
微信小程序获取用户手机号码
2022-08-03 10:56:00 【InfoQ】

<button open-type="getPhoneNumber" @getphonenumber="weChatLogin" class="clearBtn">
<view class="loginType">
<view class="item">
<view class="icon"><u-icon size="60" name="weixin-fill" color="rgb(83,194,64)"></u-icon></view>
微信
</view>
</view>
</button>
weChatLogin(e){
uni.showLoading({title:"登录中....",mask:true})
let code= e.detail.code;
let url = "/api/miniWxApi/getPhoneNum?code="+code;
this.$u.get(url).then(res => {
let phoneNum = res.phoneNum
let weChatUrl = "/api/weChatLogin";
this.$u.post(weChatUrl,{
username: phoneNum,
code: code
}).then(data => {
uni.hideLoading();
// 登录成功初始化token与用户信息
this.$u.vuex('vuex_token', data.token);
this.$u.vuex('vuex_user', data.loginUser);
uni.switchTab({
url: '/pages/index/index'
})
});
});
},
/**
* 获取用户手机号码
*/
@GetMapping("/getPhoneNum")
public AjaxResult getPhoneNum(String code){
AjaxResult ajax = AjaxResult.success();
// Object token = getAccessToken();
Object token = WxUtil.obtainAccessToken(APPID, SECRET);
String phoneNum = WxUtil.getPhoneNum(token,code);
ajax.put("phoneNum",phoneNum);
return ajax;
}
/**
* 获取AccessToken
*/
@GetMapping("/getAccessToken")
public AjaxResult getAccessToken(){
AjaxResult ajax = AjaxResult.success();
Object token = redisCache.getCacheObject(accessTokenKey);
if(StringUtils.isNull(token)){
token = WxUtil.obtainAccessToken(APPID, SECRET);
redisCache.setCacheObject(accessTokenKey,token,30,TimeUnit.MINUTES);
}
ajax.put(accessTokenKey,token);
return ajax;
}
/**
* 微信小程序注册/登录
*/
@PostMapping("/weChatLogin")
public AjaxResult weChatLogin(HttpServletRequest request,@RequestBody LoginBody loginBody)
{
AjaxResult ajax = AjaxResult.success();
String msg = "登录成功";
if (StringUtils.isEmpty(loginBody.getUsername())){
msg = "用户名不能为空";
return error(msg);
}
// 判断是否为新用户
SysUser sysUser = userService.selectUserByUserName(loginBody.getUsername());
// 不是新用户,创建用户
if(sysUser == null){
sysUser = new SysUser();
sysUser.setUserName(loginBody.getUsername());
sysUser.setNickName(loginBody.getUsername());
sysUser.setPassword(loginBody.getUsername());
sysUser.setPhonenumber(loginBody.getUsername());
sysUser.setPassword(SecurityUtils.encryptPassword(loginBody.getUsername()));
sysUser.setDeptId(110L);
Long[] postIds = new Long[1];
postIds[0] = 8L;
Long[] roleIds = new Long[1];
roleIds[0] = 5L;
sysUser.setPostIds(postIds);
sysUser.setRoleIds(roleIds);
// 保存完用户后,还需要设置用户的角色,部门与岗位
userService.insertUser(sysUser);
}
// 生成token
LoginUser loginUser = new LoginUser(sysUser,null);
String token = tokenService.createToken(loginUser);
ajax.put(Constants.TOKEN, token);
ajax.put("loginUser", loginUser);
return ajax;
}
边栏推荐
猜你喜欢

创建C UDR时,指定的HANDLESNULLS的作用是什么?

MySQL database combat (1)

Dry goods!A highly structured and sparse linear transformation called Deformable Butterfly (DeBut)

redis基础知识总结——数据类型(字符串,列表,集合,哈希,集合)

鸿蒙第四次

C#/VB.NET 从PDF中提取表格

2022年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多

Depth study of 100 cases - convolution neural network (CNN) to realize the clothing image classification

训练双塔检索模型,可以不用query-doc样本了?明星机构联合发文

Spinner文字显示不全解决办法
随机推荐
科普大佬说 | 黑客帝国与6G有什么关系?
成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...
Programmers architecture practice way: software architecture basic concepts and thinking
CADEditorX ActiveX 14.1.X
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二
怎么在外头使用容器里php命令
QT with OpenGL(Shadow Mapping)(面光源篇)
MySQL数据库高级使用
GBase 8c与openGauss是什么关系?
C#/VB.NET 从PDF中提取表格
嵌入式软件组件经典架构与存储器分类
开源一夏 | 教你快速实现“基于Docker快速构建基于Prometheus的MySQL监控系统”
【二分查找详解外加递归写法】附有全部代码
MATLAB程序设计与应用 2.7 结构数据与单元数据
LyScript implements memory stack scanning
DOM对象能干什么?
图新地球为什么很模糊,白球、看图、下载问题深度剖析
深度学习100例——卷积神经网络(CNN)实现服装图像分类
如何改变sys_guid() 返回值类型
Polymorphism in detail (simple implementation to buy tickets system simulation, covering/weight definition, principle of polymorphism, virtual table)