logo资料库

微信js-sdk+JAVA实现“分享到朋友圈”和“发送给朋友”功能详解.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
分享到朋友圈”和和“发送给朋友 微信微信js-sdk+JAVA实现实现“分享到朋友圈 本文分享了微信js-sdk+JAVA实现“分享到朋友圈”和“发送给朋友”功能介绍,大家可以参考一下 发送给朋友”功能详解 功能详解 主要为以下实现步骤: 1.绑定域名 绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。(特别提示不需要加上http或者https,吃过亏) 2.页面引入js文件 3.通过config接口注入权限验证配置 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录1 jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); 4.通过ready接口处理成功验证 wx.ready(function(){ //详细代码 }); 5.通过error接口处理失败验证 wx.error(function(res){}); 详细页面代码 java后台action代码: //微信分享 public void shareToFriend(){ HttpServletRequest request = ServletActionContext.getRequest();
String timeStamp = Sha1Util.getTimeStamp();//时间戳 String nonceStr = WxConfig.getUUID();//随机字符串,不长于32位 String url=request.getParameter("url"); String signature = WxConfig.getSignature("APPId", "APP_secret", url, timeStamp, nonceStr); request.setAttribute("timeStamp", timeStamp); request.setAttribute("nonceStr", nonceStr); request.setAttribute("url", url); request.setAttribute("signature", signature); WXjssdk result = new WXjssdk(timeStamp,nonceStr,signature,url); CommonUtil.returnMsg(ServletActionContext.getResponse(), new Gson().toJson(result)); } WxConfig.java代码 ">//jsapi_ticket public final static String WEIXIN_JSAPI_TICKET_URL ="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi"; //access_token public static String getAccessToken(String appId,String appSecret){ String access_token; access_token = mapToken.get("accessToken"); if(access_token==null){ String url = HttpUtil.WEIXIN_HOST_API + "/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret; String menuJsonStr = HttpUtil.get(url); final Type type = new TypeToken>() {}.getType(); final Map accessTokenInfo = new Gson().fromJson(menuJsonStr, type); try{ access_token = accessTokenInfo.get("access_token").toString(); Object expires_in = accessTokenInfo.get("expires_in"); mapToken.put("accessToken", access_token); logger.info("access_token:"+access_token+";expires_in:"+expires_in); }catch (JSONException e) { access_token = null; e.printStackTrace(); logger.error("errcode:{}:"+accessTokenInfo.get("errcode")+"errmsg:{}:"+accessTokenInfo.get("errmsg")); } } return access_token; } //jsapi_ticket public static String getJsapiTicket(String accessToken){ String ticket; ticket = mapTicket.get("ticket"); if(ticket==null){ String url = HttpUtil.WEIXIN_HOST_API + "/cgi-bin/ticket/getticket?access_token="+accessToken+"&type=jsapi"; String menuJsonStr = HttpUtil.get(url); final Type type = new TypeToken>() {}.getType(); final Map ticketInfo = new Gson().fromJson(menuJsonStr, type); try{ ticket = ticketInfo.get("ticket").toString(); String expires_in = ticketInfo.get("expires_in").toString(); mapTicket.put("ticket", ticket); logger.info("jsapi_ticket:"+ticket+";expires_in:"+expires_in); }catch (JSONException e) { ticket = null; e.printStackTrace(); logger.error("ticket errcode:{}:"+ticketInfo.get("errcode")+"errmsg:{}:"+ticketInfo.get("errmsg")); } } return ticket; } //生成随机字符串UUID public static String getUUID(){ String uuid = UUID.randomUUID().toString().trim().replaceAll("-", ""); return uuid; } //JS-SDK Signature public static String getSignature(String appId,String appSecret,String url,String timeStamp,String nonceStr){ String accessToken = getAccessToken(appId,appSecret); String jsapi_ticket = getJsapiTicket(accessToken); logger.info("accessToken==="+accessToken); String signValue = "jsapi_ticket="+jsapi_ticket+"&noncestr="+nonceStr+"×tamp="+timeStamp+"&url="+url; logger.info("微信JS-SDK权限验证的签名串:"+signValue); //这个签名.主要是给加载微信js使用.别和上面的搞混了. String signature = Sha1Util.getSha1((signValue)); logger.info("微信JS-SDK权限验证的签名:"+signature); return signature; } 另外项目用到的Sha1Util.java和MD5Util.java可以直接在平台下载。
分享到:
收藏