家明故事

[微信] 对于微信二次分享没有缩略图的解决办法

家明 0 1

在上一篇《[微信] 微信端分享网页时 JS-SDK 获取标题 缩略图 链接 描述》讲述了如何运用微信JS-SDK分享接口来获取分享缩略图的方法。

但当我打开别人分享的有缩略图的网页时,进行再次分享时却没有了缩略图,这又是什么原因呢? 后来调试发现,在打开别人在微信里分享时,链接后面自动加上了 ?from=timeline&isappinstalled=0 或者 ?from=groupmessage&isappinstalled=0 。这就是二次分享时url改变了,签名也变了,缩略图不显示的原因。

假设你的页面url地址是 http://test.com/test.html 第一次分享是ok,但是当你分享出去之后,链接就会变成下面这样,?后面都是weixin自己加的 http://test.com/test.html?from=singlemessage&isappinstalled=0 百度发现这个是记录分享次数和来源的:

4

找到原因了解决办法就容易了,在获取url时直接把后面那段去掉就可以了。 在jssdk.php文件的方法public function getSignPackage()里对url做处理,加入一行:

$url = str_replace(array("?from=timeline&isappinstalled=0", "?from=groupmessage&isappinstalled=0", "?appinstalled=0"), "", $ourl);

建议使用preg_replace来匹配替代,因为微信总共有五种分享接口:

分享到朋友圈(?from=timeline&isappinstalled=0)

分享给朋友(?from=groupmessage&isappinstalled=0)

分享到QQ(?appinstalled=0)

分享到腾讯微博

分享到QQ空间。

每种的名字不一样,我这里做测试只写了三种,剩下的自己去匹配吧!

5

这样二次分享没有缩略图的问题就解决了。  


附录:其他缩略图不显示报错原因

1. 前端页面js分享方法里标题、描述里的文字有空格、换行符等:

6

$weixinDesc = trim(str_replace(array("\r\n", "\r", "\n", "\t"), "", $description));

将其去掉后正常显示。

2. 前端页面js分享方法里图片路径(imgUrl)不能有中文,不然缩略图也不会显示:

7

已上为本人亲测有效,希望能帮到各位朋友。


标签:微信  JSSDK  缩略图  二次分享  微信分享  

打赏

发表评论