微信登陆-小程序

上一篇写了微信PC端登陆,这篇来说下小程序的JAVA登陆,流程不太相同,小程序的相对简单前端

PC端登陆能够看一下个人另外一篇文章  : 微信登陆-PC端版本json

老规矩,直接贴代码小程序

/**
 * @Author : Yanqiang
 * @Date : 2019/4/9
 * @Param : [code, fullUserInfo, source]
 * @return : com.jld.passport.common.BaseResult
 * @Description :
 * 
 *          前端请求到这个接口的时候,就已经拿到用户的基本信息了,用code + APPID + Secret 去请求登陆接口
 */
public BaseResult login(String code, JSONObject fullUserInfo, int source) {
    BaseResult baseResult = new BaseResult();
    //组装返回数据
    String loginUrl = "https://api.weixin.qq.com/sns/jscode2session?appid={APPID}&secret={SECRET}&js_code={CODE}&grant_type=authorization_code";
    //userInfo信息,从这里面拿到用户信息
    JSONObject userInfo = (JSONObject) fullUserInfo.get("userInfo");

    //区分不一样小程序的appid
    if (source == 1){
        //小程序
        loginUrl = loginUrl.replace("{APPID}","微信发放的APPID")
                .replace("{SECRET}","微信发放的Secret")
                .replace("{CODE}",code);
    }else if (source == 2){
        //App
        loginUrl = loginUrl.replace("{APPID}","微信发放的APPID")
                .replace("{SECRET}","微信发放的Secret")
                .replace("{CODE}",code);
    }else if (source == 3){
        //公众号
        loginUrl = loginUrl.replace("{APPID}","微信发放的APPID")
                .replace("{SECRET}","微信发放的Secret")
                .replace("{CODE}",code);
    }
    log.info("请求微信登陆url:"+loginUrl);
    JSONObject jsonData = CommonUtil.httpsRequest(loginUrl, EnumMethod.GET.name(), null);
    log.info("请求微信登陆返回data:"+jsonData);
    //不要用微信文档上的那些code作判断!!! 根本不许,
    String wxUnionId = (String) jsonData.get("unionid");
    if (wxUnionId != null){
        //请求成功
        String openid = (String) jsonData.get("openid");
        //业务处理....
    }else {
        //请求失败
        JldUtils.setStatus(baseResult, StatusCode.USER_LOGIN_FAIL_ERROR);
    }
    //wxUnionId; 执行登陆记录(0登陆/1登出); source登陆来源(1小程序/2App/3公众号/4 PC)
    int a =insertLoginLog(wxUnionId,0,source);
    return baseResult;
}
相关文章
相关标签/搜索