微信js-sdk分享,修改分享内容及链接

其实主要还是要看微信的js-sdk
http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html

页面上的代码(微信文档中有)

<script> wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '${appId}', // 必填,公众号的唯一标识 timestamp: '${timestamp}', // 必填,生成签名的时间戳 nonceStr: '${nonce_str}', // 必填,生成签名的随机串 signature: '${signature1}',// 必填,签名,见附录1 jsApiList: [ 'checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); // 微信 conifg验证完成后,会进入ready方法,在这里实现你的修改 wx.ready(function(){ wx.checkJsApi({ jsApiList: [ 'getNetworkType', 'previewImage' ], success: function (res) { // alert("checkJsApi=="+ JSON.stringify(res)); } }); wx.onMenuShareTimeline({ title: '我是分享的标题', // 分享标题 link: '', // 分享链接 imgUrl: '', // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } }); // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 //分享给朋友 wx.onMenuShareAppMessage({ title: '我是分享的标题', // 分享标题 desc: '我是分享的内容', // 分享描述 link: '', //分享的链接 imgUrl:'', // 分享图标 type: 'link', // 分享类型,music、video或link,不填默认为link //dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function () { // 用户确认分享后执行的回调函数 //alert("用户确定分享"); }, cancel: function () { // 用户取消分享后执行的回调函数 //alert("用户取消分享"); } }); }); wx.error(function(res){ // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 //alert("errormsg="+ JSON.stringify(res)); }); </script>

其实这次开发就是遇到了一个问题而已,
一直报错 “ errmsg configinvalid signature”
其实是 sha1 签名出现了问题
工具类sha1签名:

public static String NEWcreateSHA1Sign(String  ss) {

          String signature="";
// string1 = "jsapi_ticket=" + jsapiTicket +
// "&noncestr=" + rand +
// "&timestamp=" + timestamp +
// "&url=" + url;
// System.out.println(string1);

         try
           {
               MessageDigest crypt = MessageDigest.getInstance("SHA-1");
               crypt.reset();
               crypt.update(ss.getBytes("UTF-8"));
               signature = byteToHex(crypt.digest());
           }
           catch (Exception e){
               e.printStackTrace();
           }

// System.out.println("签名1:"+signature);
          // System.out.println("签名2:"+ SHA1Util.encode(string1) );
      return signature;

    }


     private static String byteToHex(final byte[] hash) {
        Formatter formatter = new Formatter();
        for (byte b : hash)
        {
            formatter.format("%02x", b);
        }
        String result = formatter.toString();
        formatter.close();
        return result;
      }

后台代码

获取 token
获取jsapi_ticket
生成签名
返回给页面数据

你可能感兴趣的:(微信js-sdk分享,修改分享内容及链接)