微信公众号获取用户信息-网页授权
Posted donotshow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信公众号获取用户信息-网页授权相关的知识,希望对你有一定的参考价值。
网上现在讲解微信公众号接口的文章已经很多,但还是在这边写一下,就当给自己做个记录。
微信公众号接口最开始肯定是用户数据的获取,也就是微信官方的公众号网页授权接口;
微信官方接口地址: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 后期会持续更新,有兴趣的可以一起完善!
以上是关于微信公众号获取用户信息-网页授权的主要内容,如果未能解决你的问题,请参考以下文章