微信分享自定义标题,描述内容,对接jssdk,h5-php
1.微信JS-SDK是微信公众平台,对接jssdk需要先开通微信公众号,且公众号需要通过认证,只有通过认证,分享等接口才能倍开通。
2.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”,然后再填写IP白名单,否则后面会报错导致分享失败。
3.可从官方下载你所要使用的后端类库导入项目:
http://demo.open.weixin.qq.com/jssdk/sample.zip 备注:链接中包含php、java、nodejs以及python的示例代码供第三方参考,下图为php示例
4.引入js文件
在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js
如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)。
5.通过config接口注入权限验证配置,弹出OK表示配置成功
wx.config({
debug: true,
appId: '<?php echo $signPackage["appId"];?>',
timestamp: <?php echo $signPackage["timestamp"];?>,
nonceStr: '<?php echo $signPackage["nonceStr"];?>',
signature: '<?php echo $signPackage["signature"];?>',
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
]
});
wx.ready(function () {
// 在这里调用 API
});
6.调用自己需要的接口,updateAppMessageShareData,updateTimelineShareData,提示成功便可以进行分享了。
//微信公众号-QQ微信分享描述
wx.config({
debug: false,//调试模式
appId: '<?php echo $signPackage["appId"];?>',
timestamp: <?php echo $signPackage["timestamp"];?>,
nonceStr: '<?php echo $signPackage["nonceStr"];?>',
signature: '<?php echo $signPackage["signature"];?>',
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
'updateAppMessageShareData',
'updateTimelineShareData'
]
});
wx.ready(function () { //需在用户可能点击分享按钮前就先调用
var shareData = {
title: '在吗?古人给你寄了一份新年祝福,请查收!', // 标题
desc: '快来翻开专属你的2021愿望签,还有新年大礼等着你哟~', // 描述
link: JsWap+'/activity_index.php', // 分享的URL,必须和当前打开的网页的URL是一样的
imgUrl: JsWap+'/images/logo_lu.png' // 缩略图地址
};
wx.updateAppMessageShareData(shareData);
wx.updateTimelineShareData(shareData);
});
wx.error(function (res) {
console.log(res.errMsg);//错误提示
});
7.微信分享各种失败的原因
(1).ReferenceError: wx is not defined
此报错解决办法有两种:一种把 http://res.wx.qq.com/open/js/jweixin-1.6.0.js下载到本地项目中,本地引入,不要直接引入在线链接。第二种是在页面头部增加meta标签 <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
不过网上有其它2种方法说在引入js链接之前重置define、require。或引入微信js链接位置尽可能提前。(但是对接1.6.0版本,这两种我都试过,都无效)
<script type="text/javascript">
define = null;
require = null;
</script>
<script src="http://res2.wx.qq.com/open/js/jweixin-1.6.0.js" type="text/javascript"></script>
(2).获取签名的动态url和你域名不一样导致签名失败不能成功分享,多半是动态获取https域名不成功导致,可以修改此处代码
(3).不能成功获取token导致生成签名失败,不能成功分享,
原因是公众号里面没配置IP白名单导致,按照我上面的步骤来开发则不会出现此问题
注意:上面两种接口足够分享微信朋友和微信朋友圈,但是从QQ分享到朋友和空间时自定义的图片会出错,标题和描述正常,用废弃接口也是,暂未找到原因,估计官方bug,还有说解决办法市对接QQ开放平台QQ分享,但是我没试过。