微信公众号页面授权+消息推送

一、微信端配置

  • 1、微信公众号进行微信认证。
  • 2、配置微信调用接口、按照微信要求需要进行页面授权获取用户的Openid,(这里注意一下、他会提示有个微信文件要放在项目的根目录下面,如:wx.qq.com/mp/MP_verify_7aS4leptvrYzJEsn.txt )。服务器一定要开通80端口,不要使用IP访问的地址,使用加了域名的地址。微信公众号页面授权+消息推送_第1张图片
  • 3、配置微信公众号页面授权。微信公众号页面授权+消息推送_第2张图片

4、配置调用接口的链接(项目链接:加域名后的。)。业务域名,JS接口安全域名,页面授权域名三个都要配置。
微信公众号页面授权+消息推送_第3张图片
5、以上配置通过后、查看开发者文档、页面授权。来获取用户的codeid。在获取codeid前,先获取微信平台的AppID,AppSecret,填写IP白名单。(公众号开发信息)
微信公众号页面授权+消息推送_第4张图片
6、打开公众号开发者文档、查看网页授权的步骤。第一步、更具维系提供的接口进行相对应参数的配置。
https://open.weixin.qq.com/connect/oauth2/authorize?appid=微信公众号的APPID&redirect_uri=需要授权的地址&response_type=code&scope=snsapi_userinfo&state=a-zA-Z0-9#wechat_redirect

scope分为两种授权,
1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
微信公众号页面授权+消息推送_第5张图片
7、微信公众号配置微信授权链接。
微信公众号页面授权+消息推送_第6张图片

二、以上为微信公众号配置链接、已下为项目代码配置。
1、后台代码:

//页面授权后获得的code
String code = request.getParameter("code");
		request.setAttribute("code", code);
		RestTemplate restTemplate = new RestTemplate();
		HttpHeaders headers = new HttpHeaders();
		MultiValueMap postParameters = new LinkedMultiValueMap();
		HttpEntity> requestEntity = new HttpEntity>(postParameters, headers);
		String resultMap = restTemplate .postForObject( "https://api.weixin.qq.com/sns/oauth2/access_token?appid=微信公众号的appid&secret=AppSecret(开发者秘钥)&code="+code+"&grant_type=authorization_code", requestEntity, String.class);
		request.setAttribute("resultMap", resultMap);

2、页面代码:



3、微信消息推送。先在微信公众平台设置模板,获取模板ID。

//获取需要推送人的openid
//获取当前时间
		Date day=new Date();    
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 	
//查询模板ID
		RestTemplate restTemplate = new RestTemplate();
		HttpHeaders headers = new HttpHeaders();
		MultiValueMap postParameters = new LinkedMultiValueMap();
		HttpEntity> requestEntity = new HttpEntity(postParameters,headers);
//调取access_token
		String resultMap = restTemplate .postForObject( "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret, requestEntity, String.class);
		
		JSONObject jsonObject = JSONObject.fromObject(resultMap);
		JSONObject datas = new JSONObject();
		//String access_token = "123";
		String access_token = jsonObject.getString("access_token").toString();
		datas.put("touser",id);
		datas.put("template_id",maptj.get("template_id").toString());
		JSONObject data = new JSONObject();
		JSONObject data1 = new JSONObject();
		data1.put("value", mapname.get("btname"));//标题
		JSONObject data2 = new JSONObject();
		data2.put("value", names);//审核人
		JSONObject data3 = new JSONObject();
		data3.put("value", name);//提交人
		JSONObject data4 = new JSONObject();
		data4.put("value", map.get("FSDYGCMC").toString()+" ; "+ mapqbs.get("FSQBSMC").toString());//工序表
		JSONObject data5 = new JSONObject();
		data5.put("value", fsgc +";"+ FSZH);//桩号
		JSONObject data6 = new JSONObject();
		data6.put("value", df.format(day));//提交时间
		JSONObject data7 = new JSONObject();
		data7.put("value", mapname.get("jwname"));//下标
		data.put("first", data1);
		data.put("keyword1", data2);
		data.put("keyword2", data3);
		data.put("keyword3", data4);
		data.put("keyword4", data5);
		data.put("keyword5", data6);
		data.put("remark",data7);
		datas.put("data", data.toString());
		String resultMaps = restTemplate .postForObject( "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_token, datas, String.class);

你可能感兴趣的:(微信)