提交代码
parent
2c67e41fee
commit
ed1d3cfb75
|
@ -48,17 +48,18 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
wechatLogin() {
|
wechatLogin() {
|
||||||
// 处理微信授权登录
|
// 处理微信授权登录
|
||||||
let rd = this.getQueryString("rd") || "";
|
//let rd = this.getQueryString("rd") || "";
|
||||||
let openId = this.getQueryString("openId") || "";
|
let code = this.getQueryString("code") || "";
|
||||||
// token === '' && openId != '' 只要这种情况,未绑定账号
|
// token === '' && openId != '' 只要这种情况,未绑定账号
|
||||||
if (openId != "" && rd != "") {
|
if (code != "") {
|
||||||
// 绑定账号
|
// 绑定账号
|
||||||
console.log("接口返回===>", openId, this.uId, rd);
|
console.log("接口返回===>", code, this.uId);
|
||||||
this.saveBinding(uId, openId);
|
this.saveBinding(uId, code);
|
||||||
} else {
|
} else {
|
||||||
|
const hrefUrl = window.location.href;
|
||||||
// 如果绑定了,返回成功
|
// 如果绑定了,返回成功
|
||||||
console.log("我要去登录了===>");
|
console.log("我要去登录了===>");
|
||||||
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe6fd9ad863ac09bf&redirect_uri=https://szgc.jhncidg.com/jhapi/wxAuth/userInfo&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
|
window.location = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe6fd9ad863ac09bf&response_type=code&scope=snsapi_base&redirect_uri="+encodeURIComponent(hrefUrl)+"&state=STATE#wechat_redirect";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
saveBinding(uId, openId) {
|
saveBinding(uId, openId) {
|
||||||
|
@ -66,7 +67,7 @@ export default {
|
||||||
* uId 小程序openId
|
* uId 小程序openId
|
||||||
* openId 公众号openId
|
* openId 公众号openId
|
||||||
*/
|
*/
|
||||||
wxBinding({ openId: uId, msgOpenId: openId }).then((response) => {
|
wxBinding({ openId: uId, code: code }).then((response) => {
|
||||||
if (response.code == 200) {
|
if (response.code == 200) {
|
||||||
this.successVisible = true;
|
this.successVisible = true;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -133,7 +133,7 @@ public class WechatUserLoginServiceImpl implements IWechatUserLoginService {
|
||||||
map.put("openId",openId);
|
map.put("openId",openId);
|
||||||
//验证手机号码是否绑定
|
//验证手机号码是否绑定
|
||||||
List<Map<String,Object>> checkList = wechatUserLoginMapper.checkBindByOpenId(openId);
|
List<Map<String,Object>> checkList = wechatUserLoginMapper.checkBindByOpenId(openId);
|
||||||
if(StringUtils.isNotNull(checkList)){
|
if(StringUtils.isNotEmpty(checkList)){
|
||||||
//将公众号openid传入到个人信息中...
|
//将公众号openid传入到个人信息中...
|
||||||
userInfo.put("msgOpenId",checkList.get(0).get("msgOpenId"));
|
userInfo.put("msgOpenId",checkList.get(0).get("msgOpenId"));
|
||||||
wechatUserLoginMapper.updateUserOpenId(map);
|
wechatUserLoginMapper.updateUserOpenId(map);
|
||||||
|
|
|
@ -52,19 +52,19 @@ public class WxAuthController extends BaseController {
|
||||||
*/
|
*/
|
||||||
@Anonymous
|
@Anonymous
|
||||||
@GetMapping("/authorize")
|
@GetMapping("/authorize")
|
||||||
public void authorize(HttpServletResponse response) throws Exception {
|
public void authorize(@RequestParam(value = "returnUrl", defaultValue = "https://szgc.jhncidg.com") String returnUrl, HttpServletResponse response) throws Exception {
|
||||||
log.info("【微信网页授权】进来了,参数={}");
|
log.info("【微信网页授权】进来了,参数={}", returnUrl);
|
||||||
//1. 配置
|
//1. 配置
|
||||||
//2. 调用方法
|
//2. 调用方法
|
||||||
String url = RuoYiConfig.getProjectUrl() + "/jhapi/wxAuth/userInfo";
|
String url = RuoYiConfig.getProjectUrl() + "wxAuth/userInfo";
|
||||||
/*
|
/*
|
||||||
* 相当于这种形式
|
* 相当于这种形式
|
||||||
* URLEncoder.decode(returnUrl,"UTF-8"
|
* URLEncoder.decode(returnUrl,"UTF-8"
|
||||||
* https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
|
* https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
|
||||||
*/
|
*/
|
||||||
String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_USER_INFO, "/");
|
String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_USER_INFO, returnUrl);
|
||||||
log.info("【微信网页授权】获取code,result={}", redirectUrl);
|
log.info("【微信网页授权】获取code,result={}", redirectUrl);
|
||||||
response.sendRedirect(URLEncoder.encode(redirectUrl, "UTF-8"));
|
response.sendRedirect(redirectUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -75,7 +75,8 @@ public class WxAuthController extends BaseController {
|
||||||
*/
|
*/
|
||||||
@Anonymous
|
@Anonymous
|
||||||
@GetMapping("/userInfo")
|
@GetMapping("/userInfo")
|
||||||
public void userInfo(@RequestParam("code") String code,@RequestParam("state") String state,HttpServletResponse response) throws Exception {
|
public void userInfo(@RequestParam("code") String code,
|
||||||
|
@RequestParam("state") String returnUrl,HttpServletResponse response) throws Exception {
|
||||||
/*当用户同意授权后,会回调所设置的url并把authorization code传过来,
|
/*当用户同意授权后,会回调所设置的url并把authorization code传过来,
|
||||||
然后用这个code获得access token,其中也包含用户的openid等信息*/
|
然后用这个code获得access token,其中也包含用户的openid等信息*/
|
||||||
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
|
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
|
||||||
|
@ -89,16 +90,15 @@ public class WxAuthController extends BaseController {
|
||||||
|
|
||||||
// 拿到openid
|
// 拿到openid
|
||||||
String openId = wxMpOAuth2AccessToken.getOpenId();
|
String openId = wxMpOAuth2AccessToken.getOpenId();
|
||||||
String returnUrl = RuoYiConfig.getProjectUrl() + "/#/wxAuth?rd="+System.currentTimeMillis()+"&openid=" + openId;
|
|
||||||
returnUrl = URLEncoder.encode(returnUrl, "UTF-8");
|
|
||||||
log.info("【openid:】{}", openId);
|
log.info("【openid:】{}", openId);
|
||||||
log.info("【我是前端要回调的地址:】{}", returnUrl);
|
log.info("【我是前端要回调的地址:】{}", returnUrl + "&openid=" + openId);
|
||||||
// 顺便获取一下用户信息
|
// 顺便获取一下用户信息
|
||||||
WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, "zh_CN");
|
WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, "zh_CN");
|
||||||
log.info("【用户信息:】{}", wxMpUser.toString());
|
log.info("【用户信息:】{}", wxMpUser.toString());
|
||||||
|
|
||||||
//注意拼接参数,第一个参数需要加问号,之后参数使用&拼接的问题
|
//注意拼接参数,第一个参数需要加问号,之后参数使用&拼接的问题
|
||||||
//return "redirect:" + returnUrl + "/#/?openid=" + openId;
|
//return "redirect:" + returnUrl + "/#/?openid=" + openId;
|
||||||
response.sendRedirect(returnUrl);
|
response.sendRedirect(returnUrl + "&rd="+System.currentTimeMillis()+"&openid=" + openId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -108,13 +108,31 @@ public class WxAuthController extends BaseController {
|
||||||
* 获取用户信息类,最后重定向到指定url
|
* 获取用户信息类,最后重定向到指定url
|
||||||
*/
|
*/
|
||||||
@Anonymous
|
@Anonymous
|
||||||
|
@ResponseBody
|
||||||
@PostMapping("/binding")
|
@PostMapping("/binding")
|
||||||
public AjaxResult binding(@Validated @RequestBody WxBindingVo vo) throws Exception {
|
public AjaxResult binding(@Validated @RequestBody WxBindingVo vo) throws Exception {
|
||||||
/*当用户同意授权后,将小程序openId和公众号OpenId进行绑定*/
|
/*当用户同意授权后,会回调所设置的url并把authorization code传过来,
|
||||||
SysUserOpenid sysUserOpenid = sysUserOpenidService.selectSysUserOpenidByOpenId(vo.getOpenId());
|
然后用这个code获得access token,其中也包含用户的openid等信息*/
|
||||||
if(sysUserOpenid!=null){
|
WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
|
||||||
sysUserOpenid.setMsgOpenId(vo.getMsgOpenId());
|
try {
|
||||||
return toAjax(sysUserOpenidService.updateSysUserOpenid(sysUserOpenid));
|
//获取access token
|
||||||
|
wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(vo.getCode());
|
||||||
|
//log.info("【AccessToken:】{}", wxMpOAuth2AccessToken.getAccessToken());
|
||||||
|
// 拿到openid
|
||||||
|
String openId = wxMpOAuth2AccessToken.getOpenId();
|
||||||
|
log.info("【openid:】{}", openId);
|
||||||
|
// 顺便获取一下用户信息
|
||||||
|
//WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, "zh_CN");
|
||||||
|
//log.info("【用户信息:】{}", wxMpUser.toString());
|
||||||
|
/*当用户同意授权后,将小程序openId和公众号OpenId进行绑定*/
|
||||||
|
SysUserOpenid sysUserOpenid = sysUserOpenidService.selectSysUserOpenidByOpenId(vo.getOpenId());
|
||||||
|
if(sysUserOpenid!=null){
|
||||||
|
sysUserOpenid.setMsgOpenId(openId);
|
||||||
|
return toAjax(sysUserOpenidService.updateSysUserOpenid(sysUserOpenid));
|
||||||
|
}
|
||||||
|
} catch (WxErrorException e) {
|
||||||
|
log.error("【微信网页授权】{}", e);
|
||||||
|
return error();
|
||||||
}
|
}
|
||||||
return error();
|
return error();
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,11 @@ public class WxBindingVo {
|
||||||
private String openId;
|
private String openId;
|
||||||
|
|
||||||
/** 公众号openId */
|
/** 公众号openId */
|
||||||
@NotBlank(message = "公众号openId不能为空")
|
|
||||||
@Size(max = 128, message = "小程序openId最大128位")
|
|
||||||
private String msgOpenId;
|
private String msgOpenId;
|
||||||
|
|
||||||
|
/** 小程序openId */
|
||||||
|
@NotBlank(message = "公众号授权不能为空")
|
||||||
|
@Size(max = 128, message = "公众号授权最大128位")
|
||||||
|
private String code;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue