微信页面 config注入获取权限 自定义微信分享的图片链接及标题

页面js:

引入微信官方提供的js

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

注入config,然后定义分享参数,包含图片链接、描述、标题等 

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

		jsApiList: [
			'checkJsApi',
			'onMenuShareTimeline',
			'onMenuShareAppMessage',
			'showOptionMenu',
			'hideOptionMenu'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2}
	});

	window.share_config = {
	     "share": {
	        "imgUrl": $(".slideimg").eq(0).attr("src"),//分享图,默认当相对路径处理,所以使用绝对路径的的话,“http://”协议前缀必须在。
	        "desc" : $("#h-prodname").val(),//摘要,如果分享到朋友圈的话,不显示摘要。
	        "title" : $("#h-prodname").val(),//分享卡片标题
	        "link": window.location.href,//分享出去后的链接,这里可以将链接设置为另一个页面。(此链接带有code用来获取openid  不需要再次通过 微信网页授权获取)
	        "success":function(){//分享成功后的回调函数
	        },
	        'cancel': function () { 
	            // 用户取消分享后执行的回调函数
	        }
	    }
	};  

    wx.ready(function () {
	    wx.onMenuShareAppMessage(share_config.share);//分享给好友
	    wx.onMenuShareTimeline(share_config.share);//分享到朋友圈
	    wx.onMenuShareQQ(share_config.share);//分享给手机QQ
    });

后台实现config的参数值生成

sign 方法进行jsapi_ticket的签名生成

public static Map<String, String> sign(String jsapi_ticket, String url) {
        Map<String, String> ret = new HashMap<String, String>();
        String nonce_str = create_nonce_str();
        String timestamp = create_timestamp();
        String string1;
        String signature = "";

        //注意这里参数名必须全部小写,且必须有序
        string1 = "jsapi_ticket=" + jsapi_ticket +
                  "&noncestr=" + nonce_str +
                  "&timestamp=" + timestamp +
                  "&url=" + url;
        System.out.println(string1);

        try
        {
            MessageDigest crypt = MessageDigest.getInstance("SHA-1");
            crypt.reset();
            crypt.update(string1.getBytes("UTF-8")); //对string1 字符串进行SHA-1加密处理
            signature = byteToHex(crypt.digest());  //对加密后字符串转成16进制
        }
        catch (NoSuchAlgorithmException e)
        {
            e.printStackTrace();
        }
        catch (UnsupportedEncodingException e)
        {
            e.printStackTrace();
        }

        ret.put("appId", WeixinKit.getApiConfig().getAppId());
        ret.put("url", url);
        ret.put("string1", string1);
        ret.put("jsapi_ticket", jsapi_ticket);
        ret.put("nonceStr", nonce_str);
        ret.put("timestamp", timestamp);
        ret.put("signature", signature);

        return ret;
    }

    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;
    }
    //生成随机字符串
    private static String create_nonce_str() {
        return UUID.randomUUID().toString();
    }
    //生成时间戳字符串
    private static String create_timestamp() {
        return Long.toString(System.currentTimeMillis() / 1000);
    }

 

生成config需要的签名信息等


ApiConfigKit.setThreadLocalApiConfig(WeixinKit.getApiConfig());
JsTicket JsTicket = JsTicketApi.getTicket(JsApiType.jsapi);//获取jsticket
//生成config需要的签名信息等
Map<String, String> signMap = sign(JsTicket.getTicket(), getRequest().getRequestURL().append("?").append(getRequest().getQueryString()).toString());

setAttr("signMap", signMap);

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/2276456/blog/904362

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值