当前位置:网站首页>微信小程序获取用户手机号码
微信小程序获取用户手机号码
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;
}
边栏推荐
- 程序员架构修炼之道:如何设计出可持续演进的系统架构?
- Basic using MySQL database
- numpy
- 在 Chrome 开发者工具里通过 network 选项模拟网站的离线访问模式
- 鸿蒙第三次
- [Explanation of JDBC and inner classes]
- synchronized
- 二叉搜索树(搜索二叉树)模拟实现(有递归版本)
- Binary search tree (search binary tree) simulation implementation (there is a recursive version)
- 开源一夏 | 教你快速实现“基于Docker快速构建基于Prometheus的MySQL监控系统”
猜你喜欢

Dva.js 新手入门指南

【多线程的相关内容】

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

LyScript implements memory stack scanning

Pixel mobile phone system

袋鼠云思枢:数驹 DTengine,助力企业构建高效的流批一体数据湖计算平台

Cross-chain bridge protocol Nomad suffers hacker attack, losing more than $150 million

LyScript 实现对内存堆栈扫描

成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...

如何改变sys_guid() 返回值类型
随机推荐
面试官:工作两年了,这么简单的算法题你都不会?
使用.NET简单实现一个Redis的高性能克隆版(一)
袋鼠云思枢:数驹 DTengine,助力企业构建高效的流批一体数据湖计算平台
MySQL database combat (1)
redis基础知识总结——数据类型(字符串,列表,集合,哈希,集合)
build --repot
How to use outside the PHP command in the container
科普大佬说 | 黑客帝国与6G有什么关系?
【网络原理的概念】
多态详细讲解(简单实现买票系统模拟,覆盖/重定义,多态原理,虚表)
再谈“雷克萨斯”安全装置失效!安全手册疑点重重,网友:细思极恐
面试一面
Win10/11 删除文件资源管理器左侧栏目文件夹
[Star Project] Little Hat Plane Battle (9)
Cross-chain bridge protocol Nomad suffers hacker attack, losing more than $150 million
Activiti产生的背景和作用
Binary search tree (search binary tree) simulation implementation (there is a recursive version)
[Bubble sort and odd-even sorting]
【Star项目】小帽飞机大战(九)
优炫数据库在linux平台下服务启动失败的原因