微信JSSDK自定义分享接口的策略调整--纪念我们被坑过的五一
微信JSSDK自定义分享接口的策略调整--纪念我们被坑过的五一
胡丶某人 发表于7个月前
微信JSSDK自定义分享接口的策略调整--纪念我们被坑过的五一
  • 发表于 7个月前
  • 阅读 259
  • 收藏 1
  • 点赞 3
  • 评论 10

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 为规范自定义分享链接功能在网页上的使用,自2017年4月25日起,JSSDK“分享到朋友圈”及“发送给朋友”接口,自定义的分享链接,其域名或路径必须与当前页面对应的公众号JS安全域名一致,否则将调用失败。

引言

        五一假期已过半,再睡一个懒觉,就要开始新的一天工作,想想都有点小激动呢~~~~~~

问题现象

        1.微信公众号自定义分享无法显示自定义的数据,朋友圈也是如此,但是(重点来了,拿好小板凳!),qq和qq空间分享是没问题的!!!!图片(title),简介(desc),地址(link),图片(imgUrl)。

        2.此问题第一次出现是在4月23日周日下午,分享的时候发现分享出的的信息都是默认获取的,并没有添加上自定义的属性,但是(重点又来了,继续拿好小板凳!),两个小时之后此问题有没了,自定义分享功能有可以正常使用,我以为这就是一个小插曲,没想到这仅仅是暴风雨前的宁静。

        3.周一上班下午又出现这个问题,过了一会有好了,直到周二下午彻底崩溃,微信自定义分享完全不可以使用。之后开始漫长了调试之旅,从配置文件到微信文档,从头到尾挨着检查比对,表单符号也检查,感觉是遇到了公司成立以来技术团队最严峻也最难以跨过的问题,一直到周六下午,没错就是五一假期的下午,事情终于有了眉目!!!!!

问题分析

1.分析问题:

  • 要做到微信的分享
    • 首先,需要绑定域名,将分享的域名添加到公众号设置中填写“JS接口安全域名”
    • 其次,引入js文件,最新版的已经更新的1.2.0
    • 再次,配置config文件(appId,timestamp,nonceStr,signature,jsApiList)
  • 调用分享接口
    • wx.onMenuShareAppMessage 分享到朋友
    • wx.onMenuShareTimeline 分享到朋友圈
  • 代码书写没问题,毕竟之前还是可以使用的,再次分享发现自定义属性并没有设置上,而且使用‘wx.error’发现并没有错误发生,而且是成功分享到好友,分享操作没问题
  • 尝试将‘title‘,’desc’等属性的值写死,再次分享,分享操作成功但是自定义值仍没有设置上。
  • 问题发生的期间不断有用户分享出来居然是成功的,而且可以正常使用。
  • 再用到苹果测试分享的时候居然分享成功,当时更懵逼了,为什么同样的系统分享出去的差距怎么这么大呢,总会冷静的分析一下,发现但是我的微信装的版本为6.5.4,而我的安卓机(正常使用发现无法分享问题的手机)是最新版6.5.7,3月31号进行的升级。
  • 当时还不太相信回事版本的问题,于是将苹果的为新版本升级到最新6.5.7,果然,分享遇到了同样的问题,分享不出去,至此我彻底信了!
  • 联系到分享成功的用户,他们当时所使用的为新版本的确低于6.5.7。
  • (;´༎ຶ㉨༎ຶ`)(;´༎ຶ㉨༎ຶ`)(;´༎ຶ㉨༎ຶ`)(期间各种方法各种尝试,为了解决这个问题的心情已经无法用文字描述,总体来说感觉我的后台开发生涯要结束了,蓝瘦到香菇!)(;´༎ຶ㉨༎ຶ`)(;´༎ຶ㉨༎ຶ`)(;´༎ຶ㉨༎ຶ`)(;´༎ຶ㉨༎ຶ`)

2.问题总结:

  • 配置文件和分享代码是正确的,配置文件是正确的,以为在问题产生之前一直都未动过,之前查看最后编辑时间是在上次更新的时候
  • 6.5.7分享会出现这种问题,低于6.5.7的版本分享正常,版本会影响分享????
  • 很有可能是微信那边针对自定义分享做了变动,登录到微信公众平台查看系统公告有没有新的公告,然而并没有发现什么关于分享自定义的公告。
    •               
  • 期间发了封邮件给微信,然而并没有什么乱用。赌上我‘胡丶某人’的一世英明,出去喝了点啤酒回来接着干。开发的乐趣就是发现问题,解决问题,Bug不过蝼蚁一般,怎能与我抗衡!
    •                                  

问题解决

        1.尽量言简意赅地描述问题,在百度上进行搜索,找寻一下有没有同道中人,变换着各种搜索文字,终于,SegmentFault的一个问题中发现与我很接近的,从回答的答案中找到一个神奇的地址:https://mp.weixin.qq.com/s/hAdtKl2i4ilyo9HxT1kXyw。

        2.这个神奇的地址显示页面的标题着实扎心了《JSSDK自定义分享接口的策略调整》,扎心真的很扎心,原来微信明确的有过提示要更换接口策略,而且施行时间正是4月25日周二自定义分享测定崩溃的那天!!!!!

        3.仔细查阅文档,“自定义的分享链接,其域名或路径必须与当前页面对应的公众号JS安全域名一致,否则将调用失败。”,分享出的的地址的域名必须是设置在“JS接口安全域名”的域名,而我们分享出去的域名是拼接上了授权登录(abcd :当前页面地址,appdd:微信的appid)

https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appdd + '&redirect_uri=' + abcd + '&response_type=code&scope=snsapi_userinfo&state=1021#wechat_redirect

我试着把要分享出去的地址去掉授权登陆,直接使用当前页面的地址,域名正是设置在“JS接口安全域名”的域名

http://xx.xxx.xxxx.cn/fd_xxx/xx_meal_dexxxil?xxxId=185200&Dixxxenxd=oxxxk_JwxxxJAO_Txxxx

        4.谁试谁知道,成!功!了!这个感觉比国足进世界杯还嗨皮!!!!

问题反思

1.问题的产生主要是未及时获取到微信更新的公告信息,但是微信公众号平台公告中并没有这个文档!仔细查看发现,这篇文档只在‘微信开发者’公众号中有,并不在公众号平台,身为开发人员得一大失策。

            

总结

问题的产生并不可怕,怕就怕被问题吓到。

做事情先要思考,一点一点分析问题,一点一点解决问题,虽然慢但是最有效的方法。

记于:2017-04-30 23:20        这个好的夜晚不跑步可惜了,走起,5公里!!!!!

共有 人打赏支持
粉丝 5
博文 6
码字总数 2410
评论 (10)
murphy666
您好,我想请问一下,我们之前分享出去的链接是加上网页授权的链接,现在分享出去不行了,那么我怎么才能在用户访问分享链接的时候拿到用户相对于公众号的openid呢,谢谢。您解决这个问题了吗?多谢。
zhwj407906450

引用来自“murphy666”的评论

您好,我想请问一下,我们之前分享出去的链接是加上网页授权的链接,现在分享出去不行了,那么我怎么才能在用户访问分享链接的时候拿到用户相对于公众号的openid呢,谢谢。您解决这个问题了吗?多谢。
我们的解决方案是:在页面里面写一个独立的方法,检测是否已有用户信息,或者你需要的业务参数,如果没有,页面自动跳转到授权页面即可。
murphy666

引用来自“zhwj407906450”的评论

引用来自“murphy666”的评论

您好,我想请问一下,我们之前分享出去的链接是加上网页授权的链接,现在分享出去不行了,那么我怎么才能在用户访问分享链接的时候拿到用户相对于公众号的openid呢,谢谢。您解决这个问题了吗?多谢。
我们的解决方案是:在页面里面写一个独立的方法,检测是否已有用户信息,或者你需要的业务参数,如果没有,页面自动跳转到授权页面即可。

回复@zhwj407906450 : 多谢分享,学习了。
寒风之外666
你好 我想请问一下,微信的自定义分享在安卓手机上没有问题,但是在iOS系统微信6.5.7版本就会失效,这个问题怎么解决?谢谢
boyceman
大哥。同道中人。手动捂脸。但是我这还有个比较蛋疼的问题,我就在url后面加了参数userId,它就原地爆炸,去掉参数就ok,我看你的例子里是加了参数的,你的就没问题么?
胡丶某人

引用来自“boyceman”的评论

大哥。同道中人。手动捂脸。但是我这还有个比较蛋疼的问题,我就在url后面加了参数userId,它就原地爆炸,去掉参数就ok,我看你的例子里是加了参数的,你的就没问题么?
很抱歉,这么久才看到您的评论。微信的分享要想携带参数只能带一个,也就是“?user=123”这样的,若想多带可使用一个字段拼接上多个参数如“?user=123,王伟,男”,在界面中活在接口中获取到“123,王伟,男”的参数值,根据“逗号”拆分成数组即可
胡丶某人

引用来自“寒风之外666”的评论

你好 我想请问一下,微信的自定义分享在安卓手机上没有问题,但是在iOS系统微信6.5.7版本就会失效,这个问题怎么解决?谢谢
抱歉,这么久看到您的评论。只要在ios的微信分享上也不要带着“https://open.weixin.qq.com/......”就是可以的,您最好从分享出去的链接入手查看一下,或者将所有分享所携带的连接打印出查看一下, 只要参数对基本是没问题的!
shuai-哥
第一次做自定义微信分享,步骤都没问题了,config验证ok了,分享朋友接口也调用成功了(分享链接的域名是js接口安全域名),但通过手机分享出的还是微信默认的,不是我给设定的内容,我想知道现在是不是不能自定义分享内容了?
shuai-哥
帮忙解答一下 谢谢大佬!:pray:
胡丶某人

引用来自“shuai-哥”的评论

帮忙解答一下 谢谢大佬!:pray:
抱歉,现在才给您回复,您在做分享的时候
wx.onMenuShareAppMessage({
title: title,//分享的链接标题
desc: desc,//分享的链接长文字或间接
link: fdUrlw,//分享链接
imgUrl:fdUserImg,分享的链接图片
trigger: function (res) {
},
success: function (res) {
},
cancel: function (res) {
},
fail: function (res) {
}
});
title,desc,link,imgUrl这几个变量只要能保证能有基本就可以,我这边博客所指的问题主要是‘link’所携带的链接必须是安全域名,建议您把这几个变量查一下是否都有值,有问题随时找我!!
×
胡丶某人
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: