记一次微信自定义分享debug均为true但是分享失败的经历

网上关于单页应用(vue项目)微信分享要注意的事项有很多,我就不一一列举文档里的那些了,说一些自己踩的坑,在现有资料里不容易找到的一些问题,话不多说,直接进入主题
  • 1.不带参数的页面ios可以分享成功,安卓分享始终失败,具体表现为安卓点开分享失败的链接登陆后重新分享即可成功。
       解决方法:在公众号配置的测试链接中加?,例:testxxx.com/?from=singl…
  • 2.带query参数的页面分享,安卓ios均失败,查看打开链接是因为微信加入的from参数导致的失败
       解决方法:在分享链接后面增加'?&'及可分享成功,例:link: self.link(域名) + self.share.invite_share_url(router名字) + "?&",经测试,没参数时加?,有参数时加&就行,这种方式要注意下一个页面取参数的问题。
  • 3.带query参数的页面分享,ios安卓均分享失败,而且所有debug均为true,但是两者表现不同,安卓分享出去样子上表现为分享成功,但是实际点进去不是要分享的页面,而是首页。ios表现特别明显,就是分享失败的样子,图片如下
    这个最难找,Google和baidu了一整天还是一脸懵逼,最后无意中发现是因为参数里面有汉字

解决方法:后台跳往这个页面的时候encord url里面的参数....,坑爹啊!!!

在PHP中实现微信自定义分享功能,通常需要以下几个步骤: 1. **获取微信JS接口的签名**: - 首先需要在服务器端获取`access_token`,然后使用`access_token`获取`jsapi_ticket`。 - 接着根据微信的规则生成签名(signature)。 2. **前端调用微信JS SDK**: - 在前端页面中引入微信JS SDK,并配置`wx.config`。 - 设置分享的内容,如标题、描述、图片链接和链接。 以下是一个简单的示例: ### 后端PHP代码(获取签名) ```php <?php function getSignPackage() { $appId = 'YOUR_APP_ID'; $appSecret = 'YOUR_APP_SECRET'; // 获取access_token $accessToken = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$appSecret}"); $accessToken = json_decode($accessToken, true); // 获取jsapi_ticket $jsapiTicket = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$accessToken['access_token']}&type=jsapi"); $jsapiTicket = json_decode($jsapiTicket, true); // 生成随机字符串 $nonceStr = generateNonceStr(); // 当前时间戳 $timestamp = time(); // URL $url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // 签名 $string = "jsapi_ticket={$jsapiTicket['ticket']}&noncestr={$nonceStr}&timestamp={$timestamp}&url={$url}"; $signature = sha1($string); $signPackage = array( "appId" => $appId, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "url" => $url, "signature" => $signature, "rawString" => $string ); return $signPackage; } function generateNonceStr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } // 输出签名包 $signPackage = getSignPackage(); ?> ``` ### 前端HTML代码(调用微信JS SDK) ```html <!DOCTYPE html> <html> <head> <title>微信自定义分享</title> <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> </head> <body> <script> wx.config({ debug: false, appId: '<?php echo $signPackage["appId"]; ?>', timestamp: <?php echo $signPackage["timestamp"]; ?>, nonceStr: '<?php echo $signPackage["nonceStr"]; ?>', signature: '<?php echo $signPackage["signature"]; ?>', jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'] }); wx.ready(function () { wx.updateAppMessageShareData({ title: '自定义标题', desc: '自定义描述', link: 'http://yourdomain.com', imgUrl: 'http://yourdomain.com/image.jpg', success: function () { // 设置成功 } }); wx.updateTimelineShareData({ title: '自定义标题', link: 'http://yourdomain.com', imgUrl: 'http://yourdomain.com/image.jpg', success: function () { // 设置成功 } }); }); </script> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值