微信小程序登录(Java)

本文介绍了微信小程序登录流程的Java实现,包括小程序调用微信接口获取code和用户信息,服务器通过code换取openid和sessionKey,验证signature并解密encryptData,确保用户身份正确。
摘要由CSDN通过智能技术生成

1、思路图解


2、思路描述

(1)小程序调用wx.login获取code

(2)小程序调用wx.getUserInfo得到rawData, signatrue, encryptData.

(3)小程序调用Server并传入前两步获取的code、rawData、signature、encryptData,server调用微信提供的jsoncode2session接口获取openid、sessionKey

(4)签名验证signature

(5)利用(3)获取的sessionKey解密entryptData,验证openid是否对应

3、代码展示

(1)接口(此处PageData可等同于request.getParameter)

@RequestMapping(value = "/login")
@ResponseBody
public Object login() throws Exception {
    logger.info("Start getSessionKey");
    JsonResult jsonResult = new JsonResult();
    String code = MessageUtil.CODE_SUCCESS;//状态码
    String msg = MessageUtil.MSG_00;//提示信息
    PageData pd = new PageData();
    try {
        pd = this.getPageData();
        PageData data = new PageData();
        String token = "";
        if(!pd.containsKey("code") || StringUtils.isEmpty(pd.getString("code"))){
            code = MessageUtil.CODE_ERROR;
            msg = MessageUtil.MSG_NULL;
        }else if(!pd.containsKey("rawData") || StringUtils.isEmpty(pd.getString("rawData"))){
            code = MessageUtil.CODE_ERROR;
            msg = MessageUtil.MSG_NULL;
        }else if(!pd.containsKey("signature") || StringUtils.isEmpty(pd.getString("signature"))){
            code = MessageUtil.CODE_ERROR;
            msg = MessageUtil.MSG_NULL;
        }else if(!pd.containsKey("encryptedData") || StringUtils.isEmpty(pd.getString("encryptedData"))){
            code = MessageUtil.CODE_ERROR;
            msg = MessageUtil.MSG_NULL<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值