微信自定义分享功能的实现
因为公司项目要求,要能在做的h5页面上面实现分享的自定义功能,就是说在分享到微信或朋友圈时可以自定义显示的标题、描述和图片。上微信的公众平台看了下,需要调用js-sdk来进行实现。据说以前是直接可以写js代码来实现的,后来微信更新就不再支持了。
要调用这个js-sdk也不是那么容易的,要一步步的来。
1.首先要有微信公众号,获得对应的appid和appsecret。另外要在微信公众平台设置下允许访问这个js接口的域名,目前一个公众号最多设置3个域名。
2.接下来就是写代码实现了。首先要根据appid和appsecret获取accesstoken并保存下来,2个小时后过期然后再重新获取。这个accesstoken必须保存下来,不能频繁去获取,因为微信那边有次数限制的。之后再根据accesstoken去获取JsapiTicket,这个跟accesstoken一样也是有过期时间和请求次数限制的,所以也要保存下来才行。有了JsapiTicket之后还要根据时间戳、随机字符串、当前url来获取签名信息。
3.将获取到的配置信息返回到前台页面,并在前台页面引入微信的js,调用对应的分享方法就可以了。
虽然看着并不复杂,不过里面还是有一些坑的,下面就说下我踩过的
1.获取签名信息时是要调用微信的接口的,这个时候传递参数的顺序是jsapi_ticket,noncestr,timestamp,url,这里顺序错了也会导致生成的签名字符串不正确。
2.生成签名时传递的这个url参数一定要是动态生成的,因为在微信分享出去这个地址会在后面增加一些参数的,如果你还是按照原来的那个地址,就会发现点击分享出去的地址进入后再分享是没有自定义效果的。如果是c#的可以用Request.Url来作为这个url的参数,也可以在前台通过location.href来获取实际的访问地址。