本文不讲解整体的实现过程,讲实现过程的文章网上有很多,这里就不累述了,我只说说开发过程中遇到的坑,我觉得80%第一次开发微信分享的人应该都遇到过。
1. 官网下载的sample压缩包怎样使用
在官网会下载jssdk-php的sample,里面有四个文件
不要觉得文件多头疼,如果稍微耐心下看看这四个文件就知道怎样用了
sample是入口,你在js中ajax调用的php 写它就对了
jssdk是真正的功能实现,包括你可能同样迷茫的access的获取等,jssdk是require在sample中的,所以不用担心它的调用
然后两个json是为了储存jssdk中获得的token和ticket,因为access_token有获取次数的限制,所以我们获取之后一般会储存起来,官网给的例子就是放到了json中
2. "errMsg":"config:invalid signature"
这个错误真的是让人想掀桌(╯‵□′)╯︵┻━┻,网上的解决方法有很多,具体分类请看https://www.yudouyudou.com/jiaochengheji/wangzhanjianshe/1237.html,这里我着重讲一下因为url报错的问题,虽然知道错误原因是因为sha1时传入的url不正确,可是我在js中无论怎么改都有这个报错,后来发现问题出在官方给的php里。
首先下面是我js的调用,很普通
$.ajax({
url: "../jssdk-php/sample.php?" + location.href.split('#')[0], //通过location获取当前网址,
type: "get",
success: function(data) {
callback(data);
}
})
然后官网给的php是默认你的h5 js等也是写在php中的,所以它在获取这本身当然没问题,官方给出的代码如下
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
可是,这样获取到的url是你在ajax的url中写的整体路径,也就是说是包含调用php那部分的路径,使用这个url当然会报错。
得知这点之后,修改方案也简单了,只需要把?后我们需要分享的路径取出来就好了
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$url = substr($url,strpos($url,'?')+1);
这个困扰了我好几个小时的BUG总算解决了,也是自己不认真
3. 分享时图片不能正常显示
正常分享出去的链接,右侧是自己定义的图片,可是当时无论怎样都无法显示,只有分享方在自己手机里可以看见
仔细检查之后也没有BUG,是什么原因导致图片失效的呢?
答案是,坑爹的屏蔽!!!!你分享出去的链接微信都会有关键字检查,例如我上图的链接中,邀请两个字就是禁词,这才导致图片不能正常显示。
改法也有很多,可以换词,也可以用繁体字,亲测有效
暂时只有这么多,有什么错误或者遗漏,欢迎大神补充讨论