最近做了一个手机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