JAVA公众号分享朋友圈开发教程

第一步:绑定域名

在这里插入图片描述
在这里插入图片描述

第一张是正式号的,第二张是测试号用户的设置好。测试号的域名(你可以去弄个花生壳内网穿透 )

第二步:引入JS文件

http://res.wx.qq.com/open/js/jweixin-1.6.0.js
如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:
http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)。

备注:支持使用 AMD/CMD 标准模块加载方法加载

步骤三:通过config接口注入权限验证配置 写自己的页面的代码

<script th:inline="javascript">
		$(function() {
		
			//要分享的标题
			var title = $("#projectNameFront").text();
			//要分享的详情
			var desc = $("#detail").text();
			//要分享的图片
			var imgUrl = "填一个图片的地址,获取页面的也可以";
			//这个我设置的是当前页面  这个window.location.href的就是获取当前页面你的地址
			var path = window.location.href;
			//这个我设置的是当前页面
			var url = window.location.href;

			//获取随机串
			var createNonceStr = function() {
				return Math.random().toString(36).substr(2, 15);
			};

			// timestamp
			var createTimeStamp = function() {
				return parseInt(new Date().getTime() / 1000) + '';
			};
			var signature, timestamp, noncestr, appid;

			/*微信分享*/
			$.ajax({
				url : "/wx/getWxConfig",
				type : 'POST',
				data : {
					url : url,//把这个地址传回后台
					timestamp : createTimeStamp,
					nonce_str : createNonceStr
				},
				success : function(data) {
					signature = data.signature;//处理后的signature 
					timestamp = data.timestamp;//时间戳
					noncestr = data.nonceStr;//
					appid = data.appId;//appid

					wx.config({
						debug : false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。	
						appId : appid, // 必填,公众号的唯一标识	
						timestamp : timestamp, // 必填,生成签名的时间戳	
						nonceStr : noncestr, // 必填,生成签名的随机串	
						signature : signature,// 必填,签名	
						jsApiList : [ 'onMenuShareTimeline' ]// 必填,需要使用的JS接口列表,这个是分享朋友圈的	
					});

					wx.ready(function() {
						//分享给朋友圈	
						wx.onMenuShareTimeline({
							title : title, // 分享标题	上面拿下来的
							desc : desc, // 分享描述上面拿下来的
							link : path, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致	
							imgUrl : imgUrl, // 分享图标	
							success : function() {
								// 用户确认分享后执行的回调函数	
							},
						});
					});
				},
				error : function(error) {
				console.log(error);
				}
			});
		})
	</script>

第四步、写后台的代码 — 也就是代码中的这个方法(url : “/wx/getWxConfig”)。

/**
	 * 分享朋友圈功能
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/getWxConfig",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, String> getWxConfig(HttpServletRequest request, HttpServletResponse response) {
        Map<String, String> ret = new HashMap<>();
     //前台传回来的值
		String timestamp = request.getParameter("timestamp");
		String noncestr = request.getParameter("nonce_str");
        String url = request.getParameter("url");
       
      //获取凭证(这个有点关键)
        JSONObject jsapi_ticket = WxUtil.getTeket();
      
        String ticket = jsapi_ticket.getString("ticket");
      //获取签名(这个有点关键)
        String signature = CheckUtil.checkSignature1( ticket,noncestr,timestamp, url); 
		ret.put("appId", "你自己的APPID");
        ret.put("nonceStr", noncestr);
        ret.put("timestamp", timestamp);
        ret.put("signature", signature);
        return ret;
    }

---- JSONObject jsapi_ticket = WxUtil.getTeket(); getTeket()具体在下面代码中 大概看看吧
-----String signature = CheckUtil.checkSignature1( ticket,noncestr,timestamp, url);具体在下下面代码中 大概看看吧

public class WxUtil{

	public static final String APPID = "123";
	public static final String APPSECRET = "123";
	
	public static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";

	public static final String SEND_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";

	public static final String CREATE_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
	// 获取用户信息的接口
	public static final String GET_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
	// 获取网页授权accessToken的接口
	public static final String GET_WEB_ACCESSTOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
	//获取GET_TICKET 的接口
	public static final String GET_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";

	public static String accessToken;

	public static long expiresTime;

	/**
	 * 获取网页授权的AccessToken凭据
	 * 
	 * @return
	 */

	public JSONObject getWebAccessToken(String code) {
		JSONObject result = HttpUtils.doGetstr(
				GET_WEB_ACCESSTOKEN_URL.replace("APPID", APPID).replace("SECRET", APPSECRET).replace("CODE", code));
		return result;
	}
	/**
	*/
	public static String getAccessToken() {

		if (accessToken == null || new Date().getTime() > expiresTime) {
			JSONObject result = HttpUtils
					.doGetstr(ACCESS_TOKEN_URL.replace("APPID", APPID).replace("APPSECRET", APPSECRET));
			accessToken = result.getString("access_token");
			Long expires_in = result.getLong("expires_in");
			expiresTime = new Date().getTime() + ((expires_in - 60) * 1000);
		}
		return accessToken;
	}
	/**
	 * 获取jssdk的Teket
	 * @param mean
	 */
	public static JSONObject getTeket() {
		return HttpUtils.doGetstr(GET_TICKET_URL.replace("ACCESS_TOKEN", getAccessToken()));

	}

}

上面代码中 获取AccessToken 具体怎么实现 我就不说了 。

public static String checkSignature1(String ticket,String noncestr,String timestamp,String url){

		//拼接字符串
		StringBuffer buffer = new StringBuffer();
		
			buffer.append("jsapi_ticket="+ticket+"&");
			buffer.append("noncestr="+noncestr+"&");
			buffer.append("timestamp="+timestamp+"&");
			buffer.append("url="+url);

		//进行sha1加密
		String temp = SHA1.encode(buffer.toString());

		return temp;
	}

这个我简洁的写的 (因为我也是小白,只是刚好完成了这个功能 记录下 也看有大佬帮我改进下,功能是实现了的)

全局返回码说明官方文档

官方的步骤官方的步骤

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值