为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第2天 微信小程序 微信用户的登录&注册功能实现

标签:
Java SpringBoot

课程名称 : SpringBoot2.X + Vue + UniAPP,全栈开发医疗小程序

课程章节 :第 4 章 利用 OCR 与 人脸识别实现患者注册和登录

课程讲师 : 神思者


通过本章的学习。我了解到了 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;
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消