点击上方[全栈开发者社区]右上角[...][设为星标⭐]

先上官方文档:http://mp.weixin.qq.com/wiki/home/index.html

做之前建议先过遍文档,文档都说的清晰明了。

如果已经看过文档,那我们一起整理下JSSDK的流程步骤:

绑定域名

登陆微信公众号,根据下列路径找到添加页面:

微信公众号 - 公众号设置 - 功能设置 - JS接口安全域名

添加步骤:

1.下载txt文件(MP_verify_0HU5eN6Tzfwovxxx.txt),放到项目根目录下;

2.添加项目访问域名地址,点击保存。在需要调用JS接口的页面引入js文件(页面不支持https的换成http://):

https://res.wx.qq.com/open/js/jweixin-1.0.0.js

config接口权限验证

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

这里着重说下jsApiList参数:

将要用到的接口用引号形式写进去,逗号隔开('','');

这里添加的js接口名称要跟下面的wx.ready()里面的接口顺序对应。

js接口名称见官方文档。

通过ready接口处理成功验证:

wx.ready(function(){  // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

备注:

里面的js接口顺序一定要按照config()接口中的参数jsApiList中的js接口顺序排列。

通过error接口处理失败验证:

wx.error(function(res){ // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});

Over...

额,当然,只是前端的流程步骤结束了。接下来我们看后台(java)是怎么处理config()接口中需要的那些参数的。

这里需要用到公众号的几个参数:   appid、secret 。

直接上后台代码:

public class WeixinShareController extends Controller{  public void index(){    // 微信appid  String appid = "xxx";    // 微信secret String secret = "xxx";   // 初始化access_token  String access_token = "";    //  获取URL 这里的URL指的是需要分享的那个页面地址,建议这里不要写成固定地址,而是获取当前地址.    String url = getPara("url"); // 创建通过Api获取Token的链接与参数 String requestTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";    requestTokenUrl = requestTokenUrl.replace("APPID", appid);   requestTokenUrl = requestTokenUrl.replace("SECRET", secret); JSONObject jsonObjectToken = CommonUtil.httpsRequest(requestTokenUrl, "GET", null);  if(StrKit.notNull(jsonObjectToken)){    // 创建日期赋值为当前日期  createDate = new Date().getTime()/1000;    // 获取Token值 access_token = jsonObjectToken.getString("access_token");    // 获取Token有效期值  expires_in = jsonObjectToken.getLong("expires_in");  }   String requestUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi"; requestUrl = requestUrl.replace("ACCESS_TOKEN", access_token);   // 获取凭证 JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "GET", null);    if(StrKit.notNull(jsonObject)){ try {   String ticket = jsonObject.getString("ticket");  String noncestr = WebUtils.getRandom(7);   long timestamp = new Date().getTime()/1000;    String param = "jsapi_ticket="+ticket+"&noncestr="+noncestr+"×tamp="+timestamp+"&url="+url; String signature = DigestUtils.shaHex(param);  WeixinShare weixinShare = new WeixinShare();   weixinShare.setWxNoncestr(noncestr);    weixinShare.setWxTimestamp(timestamp);  weixinShare.setWxSignature(signature);  setAttr("weixinShare",weixinShare);   setAttr("appid",appid);   } catch (Exception e) { e.printStackTrace();    setAttr("errorMessage","服务器异常!");    }   }   renderJson();   }
}

前端代码:

这里建议ur参数不要写成固定地址,用提供的获取当前路径的方法获取,可以保证该js的重用:

var url    = location.href.split('#')[0];

代码:

$(function(){ var title        = $("#title").val();    var desc      = $("#desc").val();    var name      = $("#program_name").val();    var imgUrl       = $("#imgurl").val();   var path   = $("#path").val();   var url    = location.href.split('#')[0];    var signature,timestamp,noncestr,appid; /*微信分享*/    $.ajax({    url:path+"/weixinshare", type:'GET',   data:{  url : url   },  success:function (data) {   signature = data.weixinShare.wx_signature; timestamp = data.weixinShare.wx_timestamp; noncestr = data.weixinShare.wx_noncestr;   appid = data.appid;    wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。    appId: appid, // 必填,公众号的唯一标识 timestamp: timestamp, // 必填,生成签名的时间戳 nonceStr: noncestr, // 必填,生成签名的随机串   signature: signature,// 必填,签名    jsApiList: ['onMenuShareAppMessage','onMenuShareTimeline'] // 必填,需要使用的JS接口列表 }); wx.ready(function(){    //分享给朋友 wx.onMenuShareAppMessage({  title: title, // 分享标题   desc: desc, // 分享描述 link: path, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致    imgUrl:imgUrl, // 分享图标s type: 'link', // 分享类型,music、video或link,不填默认为link   dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空    success: function () {  // 用户确认分享后执行的回调函数
//                 alert("OK");   },  cancel: function () {   // 用户取消分享后执行的回调函数
//                 alert("fail"); }   }); //分享给朋友圈    wx.onMenuShareTimeline({    title: title, // 分享标题   link: path, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致    imgUrl: imgUrl, // 分享图标 success: function () {  // 用户确认分享后执行的回调函数   },  }); }); },  error:function(error){  console.log(error); }   });
})

以上就是整个功能的全部代码了。

原文链接:https://blog.csdn.net/IbelieveSmile/article/details/80176563

留言打卡30天,祝贺第一批坚持打卡的小伙伴们满月啦,继续努力!

觉得本文对你有帮助?请分享给更多人

关注「全栈开发者社区」加星标,提升全栈技能

本公众号会不定期给大家发福利,包括送书、学习资源等,敬请期待吧!

如果感觉推送内容不错,不妨右下角点个在看转发朋友圈或收藏,感谢支持。

好文章,我在看❤️

java版微信分享功能(支持分享给好友/分享到朋友圈)相关推荐

  1. jq 移动端网页分享功能_原生javascript实现分享到朋友圈功能 支持ios和android

    现在主流的分享工具也有很多,例如JiaThis.bShare分享,甚至一些大公司的如百度分享,但是他们依旧停留在只是在PC端的分享,对手机端的支持不是太好. 大家都知道现在很多手机端浏览器都内置了一些 ...

  2. IOS版微信新功能!朋友圈评论支持表情包

    12月23日消息,新版微信支持使用表情包来评论朋友圈内容. 为了查看消息真伪去微博搜索了一下,对此,腾讯公关总监张军在微博予以确认. 朋友圈的斗图大赛已经悄然开始了,目前iOS版微信更新到7.0.9后 ...

  3. QQ小程序解决方法:您的小程序分享功能缺失,为了方便用户分享传播,小程序主要页面请设置showShareItems参数属性为null或4个,这样用户可以将小程序直接转发给QQ好友、空间、微信和朋友圈

    提交QQ小程序,审核的时候,可能会被腾讯以如下理由拒绝审核: 您好,您的小程序分享功能缺失,为了方便用户分享传播,小程序主要页面请设置showShareItems参数属性为null或4个,这样用户可以 ...

  4. 微信小程序-JAVA实现微信支付功能(微信支付2.0)

    微信小程序-JAVA实现微信支付功能(微信支付2.0) 一.前言 本博客主要介绍JAVA后台与微信小程序(UNI-APP或者原生微信小程序)的微信支付的实现,如果是APP或者H5的开发暂时不支持,具体 ...

  5. mc用什么版本的java_MC版本Java版5大功能优势

    众所周知Java开发应用广泛,Java版本被很多人认为是最好的MC版本,MC版本Java版5大功能优势有什么呢?Java版开发优势:支持更多的模组.各种节日彩蛋.官方更高的重视性.游戏画面色彩更好.操 ...

  6. 一段代码完成所有分享功能,分分钟搞定分享功能

    一段代码完成所有分享功能,分分钟搞定分享功能 效果如下: 代码: <div style="width:100%; height:30px;"> <div styl ...

  7. 微信朋友圈是访问腾讯服务器吗,微信朋友圈疑似增加“来访”新功能?网友:再也不看朋友圈了!...

    原标题:微信朋友圈疑似增加"来访"新功能?网友:再也不看朋友圈了! 微信朋友圈疑似增加"来访"新功能?网友:再也不看朋友圈了! 作为当今中国最大的社交软件,微信 ...

  8. 微信官方数据披露:哪些文章更受朋友圈欢迎

    拥有4.68亿月活跃用户的微信,早已成为国内媒体和自媒体信息传播的重点社交渠道之一.但你知道用户喜欢在微信上阅读哪些文章,又喜欢如何阅读吗?今天为你揭开几个关键数据. 用户每天在微信平台上平均阅读5. ...

  9. 网页分享功能 支持 微信二维码 qq空间 qq好友 新浪微博 百度贴吧 豆瓣 人人...

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

最新文章

  1. EasyDL桌面版发布!3天体验学习
  2. C#获取进程的CPU使用率
  3. windows平台下caffe可视化配置
  4. Git 初次学习笔记
  5. 初次联系导师短信模板_2020考研复试:提前联系导师的6点注意事项(附邮件模板)...
  6. C语言字符串的输入和输出
  7. linux如何标识用户账号和组账号,linux管理用户和组
  8. 项目管理工具比较-redmine vs trac
  9. alarm/pause
  10. bzoj 3517: 翻硬币
  11. jQuery.extend函数详细用法![转]
  12. 前端工程化-webpack-cli(官方开发中。。。)
  13. dell服务器自动部署,教你DELL服务器提高电源的转化效率,最高效的方式进行电源管理...
  14. 心理学当中一些很有用的定律
  15. 网络工程师笔记--网络安全技术
  16. 五种典型开发周期模型(瀑布、V、原型化、螺旋、迭代)
  17. 基于OpenGL的3D天空仿真
  18. Linux笔记 #06# 在VPS上自建Git服务
  19. 程序员从初级到中级10个秘诀
  20. 反汇编和二进制分析工具清单

热门文章

  1. wireshark 之 kafka协议分析1
  2. SQL查询某字段中数据中的中文汉字
  3. 校园外卖点餐系统——Day03【分类管理业务开发】
  4. 第一行代码Java课后习题学习
  5. 2021最新版-1024-AWS亚马逊云EC2服务器创建CentOS7.8实例
  6. 跨行求职数分的面试经验 + 未来职业规划
  7. Git——解决回滚版本后变成游离分支无法提交代码
  8. Matlab 数据结构
  9. Vue组件之间传值/调用方法的几种方式
  10. Thread Specific Storage