随便聊聊微信自定义分享的麻烦事

1 篇文章 0 订阅
1 篇文章 0 订阅

最近去一家公司实习,需要做微信分享功能,于是研究了研究微信分享的JSAPI。微信这个API,说复杂也不复杂,说简单,倒也是是有一堆坑在等着。分享这个功能前前后后研究折腾了一个星期,遇到不少问题,想来把自己的经验都分享分享。

1. 签名

签名个人认为是实现微信分享中逻辑相对而言较为复杂的一个部分了,为了正确的配置签名逻辑,则必须熟读微信API的文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

不过,必须要稍稍批评一下微信SDK的文档写的似乎不是很走心?行文比较随意,结构也不是很清晰。对照文档实现算法逻辑的时候感觉并不是能够非常快速地找到自己所需的内容。

总之,签名逻辑的主要步骤如下,全部逻辑都在服务器端实现:

  1. 去公众号里找到你的appid和secret,收好。
  2. 服务器端通过以下文档中的说明获取access token,token的有效期为7200秒。微信API请求有次数限制,并且重复请求会降低响应速度,所以需要全局缓存access token,每次进行签名时检查token存在性和有效性。相关文档: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
  3. 利用有效的access token获得jsapi_ticket,同理进行全局缓存。
  4. 根据请求页面的地址获得url参数、自己生成一个随机字符串(长度文档中明没有明确说明,示例中使用的随机串长度为16)、获取当前时间戳。
  5. 将参数加密,得到签名。

2. 页面配置

页面的配置非常简单,先引入相关js文件,然后按照文档进行配置,每个参数都填好就可以了。


问题篇

我在实现自定义分享的过程中遇到许多问题,其中一个是分享莫名失败,明明在微信web开发者工具中能够正常工作,到了真机环境中,配置显示正确却无法实现自定义分享;另一个就是自定义分享在Android与ios端的表现非常不同,许多情况下Android可以正常分享,而IOS不行,而IOS调试起来非常困难,网上也有许多的疑问,都没有太多的解决方案。
在此提供几个解决问题的思路:

  1. 按照微信官方文档中的说明,把能解决的都先解决了。
  2. 检查微信调用的各种接口配置(如onMenuShareTimeline)是否放在wx.ready回调中。我一开始的前端逻辑为,页面加载时配置JSSDK,用户点击页面上的分享按钮时注册相关接口,并弹出引导分享蒙层,全部配置都显示ok,但是发现此时Android手机中点击分享后无任何反应,ios虽然能进行分享,但无法实现自定义,经各种尝试确定是由于注册接口时没有写在ready()中导致。
  3. 尽管微信文档中仅仅明确说明了设置安全域名时仅支持http和https,但在自定义分享链接中也尽量不要出现带有端口号的链接地址,有可能造成IOS端无法进行自定义分享的问题。
  4. 如果公众号中配置了多个安全域名,需要注意,自定义分享的链接可能需要与当前页的链接匹配同一个安全域名。
  5. 我没办法了,再查查网上别的说法吧,比如分享图标大小限制之类的。

微信的心思不要猜……很多情况下,Android端却可以成功分享,在开发者工具中调试时也看不出任何问题,但是在IOS端却无法实现自定义分享,同时IOS调试起来十分困难,所以就更令人匪夷所思了。我在解决自己遇到的问题时也是主要靠猜,能够顺利解决也是十分幸运了。可以看出,微信IOS端对自定义分享的配置验证过程更为严格,不过这样区别对待的理由也是不得而知。

个人看法,很多时候造成这样的问题还是由于微信文档编写的不够充分、结构不够清晰造成的。开发者并不知道什么原因可能会造成自定义分享失败,文档中的有些排错指示,但并不能面面俱到,许多情况下还需要开发者自己摸索。

最后,希望这篇文章能够帮到大家,配置自定义分享时少走弯路。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值