【備戰(zhàn)春招】第2天 微信小程序 微信用戶的登錄&注冊功能實現(xiàn)
通过本章的学习。我了解到了 open_id
是微信平台为微信用户颁发的全局唯一标识字符串。 相当于身份证) , 微信 用户 登陆的时候,提交微信临时授权字符串(code), 通过这个临时 授权的字符串 , 才可以获得 该微信小程序的 open_id ,拿到 open_id 之后 ,看数据库中有没有 相应的 open_id
字符串账账户记录, 有则 这个用户已经登陆过, 没有 则 注册。即可完成微信小程序的登录和注册功能。
如何获取open_id 字符串?
小程序登录时序图
说明(来自于官方文档)
调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识UnionID(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
调用接口说明
HTTPS 调用
我们发送 的是HTTP 请求 ,为了保证数据的安全性 我们使用POST请求调用.
请求参数说明
appid 小程序appid 在微信公众平台可以看到
secrec 小城序appSeret
js_code 临时授权码 通过 wx.login api 获取
grant_type 授权类型,固定写法 只需填 authorization_code
返回参数
openid string 用户唯一标识 本章我们只用到了这一个返回参数
其他具体详情 参考 微信开放文档
业务代码的编写
获取 小程序 open_id
private String getOpenId(String code) {
String url = "https://api.weixin.qq.com/sns/jscode2session";
Map<String,Object> map = new HashMap<>();
map.put("appid",appId);
map.put("secret",appSecret);
map.put("js_code",code);
System.out.println("appid : " + appId);
System.out.println("appSecret : " + appSecret);
System.out.println("code : " + code);
map.put("grant_type","authorization_code");
String response = HttpUtil.get(url,map);
JSONObject json = JSONUtil.parseObj(response);
String openid = json.getStr("openid");
System.out.println(openid);
if(openid == null || openid.length() == 0) throw new RuntimeException("临时登录凭证错误");
return openid;
}
部分登录注册业务代码
Integer id = userDao.searchAlreadyRegistered(openId);
if (id != null) map.put("successMessage","登录成功");
else {
String nickname = MapUtil.getStr(param, "nickname");
String photo = MapUtil.getStr(param, "photo");
String sex = MapUtil.getStr(param, "sex");
UserEntity user = new UserEntity();
user.setOpenId(openId);
user.setNickname(nickname);
user.setPhoto(photo);
user.setSex(sex);
user.setStatus((byte) 1);
userDao.insert(user);
id = userDao.searchAlreadyRegistered(user.getOpenId());
map.put("successMessage","注册成功");
}
String phone = userInfoCardDao.searchUserTel(id);
map.put("tel",phone);
map.put("id",id);
return map;
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質文章