1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 生成微信二维码以及扫码获取用户信息

生成微信二维码以及扫码获取用户信息

时间:2021-02-13 12:25:25

相关推荐

生成微信二维码以及扫码获取用户信息

最近项目中遇到一个自己之前没有接触过的新功能,即就是要生成一个二维码,微信用户扫码可以进行登录,并把用户的信息,如:昵称,头像、省份...获取到并入库。

https://developers./doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 微信开放文档地址。

一:先说怎样生成二维码?

1.可以百度“草料二维码”,可以利用网站生成二维码。前提是要输入一个URL,才可以生成这个二维码;

2.此URL就是

https://open./connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

,要改动的就是openid,和redirect_uri,这个edirect_uri就是回调域名,公众号上面配置的(前端工程师做的);至此二维码生成了。

二:扫码获取用户信息?扫码调下面的接口

由于之前接触过微信支付,知道怎样获取openid,不懂得朋友可以去我的另一篇

《全面详细的微信支付思路流程以及项目代码分享》/zhangleiyes123/article/details/82857195中去了解,接下来就是怎样获取到用户信息,进入到微信公众号查找相关文档,获取用户信息有两个接口,我们要使用第二个接口,

//获取用户信息接口 此接口的access_token 是接口基础调用access_token 不是网页授权access_token//public static String GET_USERINFO="https://api./cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN";//获取用户信息接口 此接口是网页授权access_tokenpublic static String GET_USERINFO="https://api./sns/userinfo?access_token={0}&openid={1}&lang=zh_CN";

直接上代码:

/*** 获取openId 微信登录 获取用户姓名* @param code* @return*/@ApiOperation(value="根据code获取openid",notes="")@GetMapping("/getOpenId")public BaseResult getOpenId(@RequestParam("code") String code){Map<String,Object> map = new HashMap<String,Object>();Map<String,Object> map1 = new HashMap<String,Object>();Map<String, Object> result = new HashMap<String,Object>();try {map.put("status", 0);//默认失败map.put("appId", WxPayConfig.APPID);//为了给前端用if(!StringUtil.isNullOrEmpty(code)){//有code//请求api获取openid(获取access_token,access_token里面带有openid)String str = HttpInvoker.sendGetRequest(StringUtil.format(WxPayConfig.GET_OPENID, new Object[]{WxPayConfig.APPID,WxPayConfig.APPSECRET,code}));//将json转mapMap<String, Object> toMap = WeixinUtil.jsonStrToMap(str);if(!StringUtil.isNullOrEmpty(toMap.get("openid"))){//获取openid成功map.put("status", 1);//成功map.put("openId", toMap.get("openid").toString()); map.put("access_token", toMap.get("access_token").toString());//=================================================================================//获取用户信息String str1 =HttpInvoker.sendGetRequest(StringUtil.format(WxPayConfig.GET_USERINFO, new Object[]{toMap.get("access_token").toString(),toMap.get("openid").toString()}));//将json转mapMap<String, Object> toMap1 = WeixinUtil.jsonStrToMap(str1);map1.put("nickname", toMap1.get("nickname").toString());//微信名map1.put("sex",toMap1.get("sex").toString());//性别 值为1时是男性,值为2时是女性,值为0时是未知map1.put("province",toMap1.get("province").toString());//省map1.put("city",toMap1.get("city").toString());//城市map1.put("country",toMap1.get("country").toString());//国家map1.put("headimgurl",toMap1.get("headimgurl").toString());//用户头像if(!StringUtils.isEmpty(str) && !StringUtils.isEmpty(str1)) {User user=userRepo.findByOpenId(toMap.get("openid").toString());if(user==null) {//用户设置用户名和openidUser user1=new User(toMap1.get("nickname").toString(),toMap.get("openid").toString());userRepo.save(user1);}result.put("openid", toMap.get("openid").toString());result.put("nickname", toMap1.get("nickname").toString());}return new BaseResult(Constants.SUCCESS_CODE,Constants.SUCCESS_MSG,result);//返回openid}else {return new BaseResult(Constants.ERROR_CODE,Constants.ERROR_MSG,"获取openid失败");}}else {return new BaseResult(Constants.ERROR_CODE,Constants.ERROR_MSG,"没有传入code值");}} catch (Exception e) {e.printStackTrace();return new BaseResult(Constants.EXCEPTION_CODE,Constants.EXCEPTION_MSG);}}

现在,数据库中就有扫码人的信息了。

相关参考链接:/qq_33696345/article/details/80521077

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。