最近做了一个手机H5在微信和QQ里分享的问题,现在总结一下碰到的坑。。。。
1.第一个问题:config invalid signature
解决方法(1) 先看看生成的签名对不对,网上有生成工具
(2)你的域名对不对,如果url有端口号,域名必须有端口号
(3)生成URL时,如果URL后面#后有没有东西,有要去掉
(4)如果当前URL和生成的URL一模一样,还是不行,在请求URL外加上encodeURI()就好了
2第二个问题:config invalid url domain
这个问题绝对是域名不对。。。。。
废话不多说,直接上H5页面的引用代码,生成签名的JAVA代码网上很多,我就不写了
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script language="javascript" type="text/javascript">
wx.config({
debug : false,//这里是开启测试,如果设置为true,则打开每个步骤,都会有提示,是否成功或者失败
appId : '${appid}',
timestamp : '${timestamp}',
nonceStr : '${nonceStr}',
signature : '${signature}',
jsApiList : [
// 所有要调用的 API 都要加到这个列表中
'onMenuShareTimeline',"onMenuShareAppMessage","onMenuShareQQ","onMenuShareQZone","hideMenuItems"]
});
wx.ready(function() {
// 1 判断当前版本是否支持指定 JS 接口,支持批量判断
wx.checkJsApi({
jsApiList : ['onMenuShareTimeline','onMenuShareAppMessage',"onMenuShareQQ","onMenuShareQZone","hideMenuItems"],
});
//隐藏QQ空间分享,QQ浏览器,safari
wx.hideMenuItems({
menuList: ["menuItem:share:QZone","menuItem:openWithSafari","menuItem:openWithQQBrowser"]
});
var strTiele="标题";
var strDesc="描述";
var strLink="URL";
var strImgUrl="小图片地址";
//分享朋友圈
wx.onMenuShareTimeline({
title : strTiele, // 分享标题
desc : strDesc,//分享描述
link : strLink, // 分享链接
imgUrl: strImgUrl,// 分享图标
});
//分享给微信好友
wx.onMenuShareAppMessage({
title : strTiele, // 分享标题
desc : strDesc,//分享描述
link : strLink, // 分享链接
imgUrl: strImgUrl,// 分享图标
});
//分享到QQ
wx.onMenuShareQQ({
title : strTiele, // 分享标题
desc : strDesc,//分享描述
link : strLink, // 分享链接
imgUrl: strImgUrl,// 分享图标
});
//分享到QQ空间
wx.onMenuShareQZone({
title : strTiele, // 分享标题
desc : strDesc,//分享描述
link : strLink, // 分享链接
imgUrl: strImgUrl,// 分享图标
});
});
</script>
为了测试隐藏空间,我把QQ浏览器和QQ空间禁掉了,如果打开页面点分享会出现,是因为Android手机会出现2秒的延迟,正常。
以上就是微信的分享,在QQ里二次分享会乱的,大家放心,有更好的解决办法,QQ开放平台有自定义的js sdk
<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/qzact/common/share/share.js"></script>
<script language="javascript" type="text/javascript">
var strTiele="标题";
var strDesc="描述";
var strLink="跳转地址";
var strImgUrl="小图标地址";
//分享
setShareInfo({
title: strTiele,
summary: strDesc,
pic: strImgUrl,
url: strLink,
WXconfig: {//如果想微信里分享必选加,否之可去掉
swapTitleInWX: true,
appId : '${appid}',
timestamp : '${timestamp}',
nonceStr : '${nonceStr}',
signature : '${signature}'
}
});
</script>
看吧,代码比微信分享的sdk简单多了,而且支持微信和QQ之间互相来回分享,没有问题
详细可参考:http://open.mobile.qq.com/api/component/share
