SpringBoot实现微信分享朋友圈Demo

初步最好看看微信官方文档的步骤,要不然容易摸不清方向,其他的就不多说了,什么映射域名、实现步骤自己看文档,我写这篇博客就是因为看网上的博客都没有一个完整的免费demo,也是为了方便我自己以后看代码。下面开始!!!

控制器 : 获取到的token 和 ticket 我为了方便直接放在session中,整合的话可以放在数据库中,通过AOP获取、验证这些信息,这些信息都有调用次数,谨慎使用。

package wechat.collector;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
import wechat.wechatApi.util.HttpReqUtil;
import wechat.wechatApi.util.ShareUtil;

/**
 * 微信分享朋友圈(最简版本)
 * @author: wulongwei
 * @date:   2019年2月16日 下午3:42:49     
 */

@Controller
public class WeixinShareController {

	
	private final Logger logger = LoggerFactory.getLogger(this.getClass()); 
	
    //appid  公众号的appId
	public static final String APP_ID = "******************";
	//appsecret   公众号的appSecret   
	public static final String SECRET = "******************";
	
	/**
	 * 获取微信签名
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/getSignature", method = RequestMethod.POST)
	@ResponseBody
	public Map WeixinController(HttpServletRequest request, HttpServletResponse response) {
        response.setHeader("Access-Control-Allow-Origin", "*");

        Map ret = new HashMap<>();
		
		//获取前台传来的三个参数
		String timestamp = request.getParameter("timestamp");
		String nonce_str = request.getParameter("nonce_str");
		String url = request.getParameter("url");
		logger.info("url"+url+"==============="+nonce_str+"============"+timestamp);
	   
		//从缓存中读取token信息,如果没有则获取一个新的token,通过token获取ticket信息
		String access_token = (String)request.getSession().getAttribute("access_token"); 
		if(access_token == null) {
			
			 /** 获取AccessToKen*/
			 String getAccessToKen = "https://api.weixin.qq.com/cgi-bin/token?"
			 		+ "grant_type=client_credential&appid="+APP_ID+"&secret="+ SECRET;
			 JSONObject	 jsonObject = HttpReqUtil.HttpsDefaultExecute("GET", getAccessToKen, null, null, null, JSONObject.class);
			
			 /**获取jsapi_ticket*/
			String getTicket = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+jsonObject.get("access_token").toString()+"&type=jsapi";
			JSONObject rest = HttpReqUtil.HttpsDefaultExecute("GET", getTicket, null, null, null, JSONObject.class);
			
			/**将信息保存入缓存中*/
			request.getSession().setAttribute("token", jsonObject.get("access_token").toString());
			request.getSession().setAttribute("ticket", rest.get("ticket").toString());
		}        
			/**生成签名*/
			String ticket = (String)request.getSession().getAttribute("ticket"); //微信返回的ticket			
			String signature = ShareUtil.getSignature(ticket,url,nonce_str,timestamp); //获取签名
	 
        ret.put("nonceStr", nonce_str);
        ret.put("timestamp", timestamp);
        ret.put("signature", signature);
        return ret;
	}
	
	/**
	 * 进入主页
	 * @return
	 */
	@RequestMapping(value="doIndex")
	public String index(){
		return "index";
	}
	
	/**
	 * 进入分享成功后跳转页面
	 * @return
	 */
	@RequestMapping(value="doResult")
	public String doResult(){
		return "share_result";
	}
	
}

 

页面

index.html





			
		
		
		



分享demo


  

微信分享到公众号朋友圈demo

点击分享朋友圈后的跳转的页面 









微信分享朋友圈




分享朋友圈跳转页,恭喜你分享成功!!!

代码完毕,我这里用搜狗浏览器,运行程序打开index页面,找到二维码,用微信扫扫,跳转到index页面会跳出提示

SpringBoot实现微信分享朋友圈Demo_第1张图片

 

弹出config:ok 则表示你的代码没什么大的问题,微信wx.config信息是正确的,点击分享后

SpringBoot实现微信分享朋友圈Demo_第2张图片

SpringBoot实现微信分享朋友圈Demo_第3张图片

进入到分享页面,头像、标题、跳转内容都是自定义的信息 

 

SpringBoot实现微信分享朋友圈Demo_第4张图片

分享后的跳转页面 

SpringBoot实现微信分享朋友圈Demo_第5张图片

 

 

 

Demo代码打包地址:

链接:https://pan.baidu.com/s/1vjDcaSxLpMDng-zLRW_M1w 
提取码:ra1w 

SpringBoot实现微信分享朋友圈Demo_第6张图片
技术交流群:16066006

 

 

你可能感兴趣的:(微信公众号开发,springBoot,JAVA)