java微信二维码登录_微信扫码登陆-Java后台

1 importcom.tryee.common.utils.StringUtils;2 importcom.tryee.front.common.ResponseData;3 importorg.springframework.beans.factory.annotation.Value;4 importorg.springframework.http.HttpStatus;5 import org.springframework.web.bind.annotation.*;6 importcom.alibaba.fastjson.JSONObject;7 importcom.jfinal.kit.HttpKit;8 importjava.util.HashMap;9 importjava.util.Map;10

11 @RestController12 @RequestMapping("/front/login/pc/")13 public classWxCb {14

15 @Value("${wx.pc.fw.accessTokenUrl}")16 privateString pcAccessTokenUrl;17

18 @Value("${wx.pc.fw.userInfoUrl}")19 privateString pcUserInfoUrl;20

21 @Value("${wx.appid}")22 privateString pcAppID;23

24 @Value("${wx.appsecret}")25 privateString pcAppsecret;26

27

28 @RequestMapping(value = "pcLoginByWeiXin", method =RequestMethod.GET)29 @ResponseStatus(HttpStatus.OK)30 publicResponseData pcLoginByWeiXin(@RequestParam String state, @RequestParam String code) {31 /**错误信息 **/

32 Map resMap = new HashMap<>();33 Map res = new HashMap<>();34 if( StringUtils.isBlank(code)) {35 resMap.put("501", "微信code为空");36 returnResponseData.fail(resMap);37 }38 if (code != null) {39 //第一次进入界面,code不空,openid为空,根据code获取openid,然后查询是否存在用户信息。

40 Map accessTokenMap = getPcWXAccessToken(code); //获取getWXAccessToken(微信网站PC扫码登录)

41 /**请求微信服务器错误 **/

42 if (accessTokenMap.get("errcode") != null) {43 resMap.put(accessTokenMap.get("errcode"), accessTokenMap.get("errmsg"));44 returnResponseData.fail(resMap);45 }46 String accessToken = accessTokenMap.get("access_token");47 String openid = accessTokenMap.get("openid");48 System.out.println("accessToken:"+accessToken);49 System.out.println("openid:"+openid);50 //查询出微信信息

51 Map wxUserMap = this.getPcWeiXinUserInfo(openid, accessToken); //获得微信用户信息

52 res =wxUserMap;53 /**获取微信信息异常 **/

54 if (wxUserMap.get("errcode") != null) {55 resMap.put(wxUserMap.get("errcode"), wxUserMap.get("errmsg"));56 returnResponseData.fail(resMap);57 }58

59

60 }61 returnResponseData.success(res);62 }63

64 /**

65 * 获取getPcWXAccessToken(微信网站PC扫码)66 *67 */

68 private MapgetPcWXAccessToken(String code) {69 Map resMap = new HashMap();70 StringBuffer target = newStringBuffer();71 target.append(pcAccessTokenUrl).append("appid=").append(pcAppID).append("&secret=").append(pcAppsecret)72 .append("&code=").append(code).append("&grant_type=authorization_code");73 String jsonStr =HttpKit.get(target.toString());74 JSONObject jSONObject =JSONObject.parseObject(jsonStr);75 if (jSONObject != null && jSONObject.get("errcode") != null) { //有错误码

76 String errcode = String.valueOf(jSONObject.get("errcode"));77 String errmsg = String.valueOf(jSONObject.get("errmsg"));78 resMap.put("errmsg", errmsg);79 resMap.put("errcode", errcode);80 } else{81 String accessToken = String.valueOf(jSONObject.get("access_token"));82 String refreshToken = String.valueOf(jSONObject.get("refresh_token"));83 String openid = String.valueOf(jSONObject.get("openid"));84 String expiresIn = String.valueOf(jSONObject.get("expires_in"));85 String unionid = String.valueOf(jSONObject.get("unionid"));86

87 resMap.put("access_token", accessToken);88 resMap.put("refresh_token", refreshToken);89 resMap.put("openid", openid);90 resMap.put("expires_in", expiresIn);91 resMap.put("unionid", unionid);92 }93 returnresMap;94 }95

96 /**

97 * 获得微信用户信息(微信网站PC扫码)98 *99 *@paramopenId100 *@paramaccessToken101 *@return

102 */

103 private MapgetPcWeiXinUserInfo(String openId, String accessToken) {104 Map resMap = new HashMap();105 StringBuffer url = newStringBuffer(pcUserInfoUrl);106 url.append("access_token=").append(accessToken).append("&").append("openid=").append(openId).append("&")107 .append("lang=zh_CN");108 String jsonStr =HttpKit.get(url.toString());109 JSONObject jSONObject =JSONObject.parseObject(jsonStr);110 if (jSONObject != null && jSONObject.get("errcode") != null) {111 String errcode = String.valueOf(jSONObject.get("errcode"));112 String errmsg = String.valueOf(jSONObject.get("errmsg"));113 resMap.put("errmsg", errmsg);114 resMap.put("errcode", errcode);115 } else{116 String nickname = String.valueOf(jSONObject.get("nickname"));117 String openid = String.valueOf(jSONObject.get("openid"));118 String sex = String.valueOf(jSONObject.get("sex"));119 String province = String.valueOf(jSONObject.get("province"));120 String city = String.valueOf(jSONObject.get("city"));121 String country = String.valueOf(jSONObject.get("country"));122 String headimgurl = String.valueOf(jSONObject.get("headimgurl"));123 String unionid = String.valueOf(jSONObject.get("unionid"));124

125 resMap.put("nickname", nickname);126 resMap.put("openid", openid);127 resMap.put("sex", sex);128 resMap.put("province", province);129 resMap.put("city", city);130 resMap.put("country", country);131 resMap.put("headimgurl", headimgurl);132 resMap.put("unionid", unionid);133 }134 returnresMap;135 }136

137

138 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值