当前位置:网站首页>微信小程序获取用户手机号码
微信小程序获取用户手机号码
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;
}
边栏推荐
- How to make self-introduction
- 多态详细讲解(简单实现买票系统模拟,覆盖/重定义,多态原理,虚表)
- 深度学习100例——卷积神经网络(CNN)实现服装图像分类
- 消费者认可度较高 地理标志农产品为啥“香”
- synchronized
- 程序员架构修炼之道:如何设计出可持续演进的系统架构?
- Question G: Word Analysis ← Questions for the second provincial competition of the 11th Blue Bridge Cup Competition
- 谷歌实用插件分享
- 面试官:工作两年了,这么简单的算法题你都不会?
- MapReduce中ETL数据清洗案例
猜你喜欢
深度学习经典网络 -- Inception系列(稀疏结构)
本周四晚19:00知识赋能第4期直播丨OpenHarmony智能家居项目之设备控制实现
Dry goods!A highly structured and sparse linear transformation called Deformable Butterfly (DeBut)
MySQL数据库高级使用
二叉搜索树(搜索二叉树)模拟实现(有递归版本)
在 Chrome 开发者工具里通过 network 选项模拟网站的离线访问模式
[Star Project] Little Hat Plane Battle (9)
MySQL database combat (1)
STM32+OLED显示屏制作指针式电子钟
鸿蒙第三次
随机推荐
Mysql OCP 72 questions
自定义实现乘风破浪的小船
机器学习(公式推导与代码实现)--sklearn机器学习库
混合型界面:对话式UI的未来
[Bubble sort and odd-even sorting]
What is the ERC20 token standard?
GBase 8c分布式数据库,数据如何分布最优?
机器学习概述
科普大佬说 | 黑客帝国与6G有什么关系?
APENFT FOUNDATION官宣2022艺术梦想基金主题征集
gbase在轨道交通一般都采用哪种高可用架构?
Dry goods!A highly structured and sparse linear transformation called Deformable Butterfly (DeBut)
【JDBC以及内部类的讲解】
Depth study of 100 cases - convolution neural network (CNN) to realize the clothing image classification
numpy
鸿蒙第四次
历史拉链数据处理有人做过吗
机器学习(第一章)—— 特征工程
Babbitt | Metaverse daily must-read: Players leave, platforms are shut down, and the digital collection market is gradually cooling down. Where is the future of the industry?...
[华为云在线课程][SQL语法入门][学习笔记]