您的位置:首页 > 移动开发 > 微信开发

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

2017-05-19 00:00 771 查看
页面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 +
"×tamp=" + 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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信 分享