微信小程序登录流程

一、流程图

说明:

  1. 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
  2. 调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key
  3. 获取手机号,调用wx.getPhoneNumber() ,获取加密串 encryptedData 和加密算法的初始向量 ivStr 传到后台,用会话秘钥session_key ,调用 wxMaService.getUserService().getPhoneNoInfo(session_key,encryptedData ,ivStr )获得解密后的数据;
  4. 获取其他用户信息,调用wx.getUserInfor() ,获取加密串 encryptedData 和加密算法的初始向量 ivStr 传到后台,用会话秘钥session_key ,调用 wxMaService.getUserService().getUserInfor(session_key,encryptedData ,ivStr )获得解密后的数据;

之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

注意:

  1. 会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥
  2. 临时登录凭证 code 只能使用一次.
  3. 密文串要用 json 格式传输,不能用参数拼接的方式,会把密文串的加号转换为空格,导致解密失败。

二、后端相关代码

1、添加依赖

 <!--微信-->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-miniapp</artifactId>
            <version>3.4.7.B</version>
        </dependency>
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>3.4.7.B</version>
        </dependency>
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-pay</artifactId>
            <version>3.4.7.B</version>
        </dependency>

2、微信jar包实体类   WxMaService wxMaService;

3、根据code获取session_key

WxMaJscode2SessionResult sessionResult = wxMaService.jsCode2SessionInfo(code);

4、获取手机号

 WxMaPhoneNumberInfo wxMaPhoneNumberInfo = wxMaService.getUserService().getPhoneNoInfo(SessionKey,EncryptedData,IvStr);

5、获取用户信息

 WxMaUserInfo  wxMaUserInfo = wxMaService.getUserService().getUserInfo(SessionKey,EncryptedData,IvStr);

说明:几个获取之间可以利用缓存加些token验证。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值