微信公众号获取用户信息-网页授权

网上现在讲解微信公众号接口的文章已经很多,但还是在这边写一下,就当给自己做个记录。

微信公众号接口最开始肯定是用户数据的获取,也就是微信官方的公众号网页授权接口;

微信官方接口地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 
网页授权信息获取分为两种
SNSAPI_BASE("snsapi_base", "基本信息"),
SNSAPI_USERINFO("snsapi_userinfo", "详细信息");

,基本信息 snsapi_base 只能获取openid,详细信息snsapi_userinfo需要用户主动授权,可以获取用户昵称,地址等信息;

准备工作:(微信公众号配置)


分别配置上项目的域名,微信会根据配置的域名回调访问;注意不能加端口等,所以项目必须可以无端口访问;

接口访问分为三步:
1.获取授权code
public static String getWeChatCode(String backUri, GdWechatScopeTypeEnum scope) throws UnsupportedEncodingException {
    backUri = URLEncoder.encode(backUri, "UTF-8");
    String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + GdWechatConfig.appid +
            "&redirect_uri=" + backUri + "&response_type=code&scope=" + scope.getTypeCode() + "&state=123#wechat_redirect";
    return url;

}
2.用code换取access_token,同时可以获取到openid
public static Map<Object, Object> getOpenIdAndTokenByCodeWechat(String code) {
    //微信
    String URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + GdWechatConfig.appid
            + "&secret=" + GdWechatConfig.secret + "&code=" + code + "&grant_type=authorization_code";
    if (StringUtils.isNotEmpty(code)) {
        String resultStr = GDHttpClient.get(URL);
        if (StringUtils.isNotEmpty(resultStr)) {
            Map<Object, Object> map = GdJsonMapper.readStringValueToMap(resultStr);
            return map;
        }
    }
    return null;
}
3.用access_token和openid获取到用户基本信息
public static Map<Object, Object> getUserInfoWechat(String openId, String token) throws Exception {
    String userinfourl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + token + "&openid=" + openId + "&lang=zh_CN";
    String resultStr = GDHttpClient.get(userinfourl);
    if (StringUtils.isNotEmpty(resultStr)) {
        return (Map<Object, Object>) GdJsonMapper.readStringValueToMap(resultStr);
    }
    return null;
}


注:代码中用到一些工具类如http,json可以用自己的
代码在github上:https://github.com/zgdcool/wechat  后期会持续更新,有兴趣的可以一起完善!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值