java 实现微信授权登陆

附官方文档地址小程序登陆 | 微信开放文档

编码前准备工作:开发之前我们需要准备两个东西AppID和AppSecret,需要到微信开放平台(https://open.weixin.qq.com)注册开发者账号,并在移动应用中将我们的APP创建进去,填写对应资料后提交审核

准备工作做好后我们开始实现,我们项目用的是springBoot+mybatis框架进行的接口开发

1.第一步是由app端调起微信授权登录页面让用户进行授权操作,用户确认授权后会返回一个code,这个code就是我们后面获取授权用户信息的关键

2.拿着第一步获得的code去获取用户信息并进行登录操作,代码如下

接收微信返回参数的实体类:

package com.xk.hmo.dto.login;

import lombok.Data;

@Data
public class WxLoginInfo {

    private String openid;//用户唯一标识
    private String session_key;//会话密匙
    private String unionid;//用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回
    private Integer errcode;
    private String errmsg;

}

appId 和 appSecret:

package com.xk.hmo.service.mobile.config;

/**
 * 小程序微信登陆配置文件
 * @author zhangt
 */
public class WxConstant {
    //小程序appid
    public static final String appid = "xxxxxxxxxxxxxxxx";
    //小程序密匙
    public static final String secret = "xxxxxxxxxxxxxxxxxxxxxxxx";
}
/**
     * 微信授权登陆
     *
     * @param code
     * @throws IOException
     */
    @PostMapping("/wxLogin")
    @ResponseBody
    protected ResultPO wxLogin(@RequestParam String code) {
        HttpClient httpclient = new HttpClient();
        GetMethod get = new GetMethod("https://api.weixin.qq.com/sns/jscode2session?appid="+ WxConstant.appid +"&secret="+WxConstant.secret +"&js_code="+ code +"&grant_type=authorization_code");
        String info ="";
        try {
            httpclient.executeMethod(get);
            info = new String(get.getResponseBody(), "utf-8");
        }catch (Exception e){
            throw new HMOException(CommonErrorCode.E100035);
        }
        log.error(info);
        WxLoginInfo wxLoginInfo = FastJsonUtil.toBean(info, WxLoginInfo.class);
        ResultPO success = ResultPO.success();
        if (wxLoginInfo.getErrcode() != null){
            success.setErrorMsg(wxLoginInfo.getErrcode().toString(), wxLoginInfo.getErrmsg());
        }else{
            success.setData(wxLoginInfo);
            //成功获取到授权,根据个人业务需求写就可以了。。。
        }
        return success;
    }
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页