文档章节

微信JSSDK自定义分享接口的策略调整--纪念我们被坑过的五一

帝听
 帝听
发布于 2017/04/30 23:19
字数 1688
阅读 646
收藏 1

引言

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

问题现象

        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公里!!!!!

© 著作权归作者所有

共有 人打赏支持
帝听
粉丝 4
博文 5
码字总数 3014
作品 0
北京
后端工程师
加载中

评论(10)

帝听
帝听

引用来自“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’所携带的链接必须是安全域名,建议您把这几个变量查一下是否都有值,有问题随时找我!!
shuai-哥
shuai-哥
帮忙解答一下 谢谢大佬!:pray:
shuai-哥
shuai-哥
第一次做自定义微信分享,步骤都没问题了,config验证ok了,分享朋友接口也调用成功了(分享链接的域名是js接口安全域名),但通过手机分享出的还是微信默认的,不是我给设定的内容,我想知道现在是不是不能自定义分享内容了?
帝听
帝听

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

你好 我想请问一下,微信的自定义分享在安卓手机上没有问题,但是在iOS系统微信6.5.7版本就会失效,这个问题怎么解决?谢谢
抱歉,这么久看到您的评论。只要在ios的微信分享上也不要带着“https://open.weixin.qq.com/......”就是可以的,您最好从分享出去的链接入手查看一下,或者将所有分享所携带的连接打印出查看一下, 只要参数对基本是没问题的!
帝听
帝听

引用来自“boyceman”的评论

大哥。同道中人。手动捂脸。但是我这还有个比较蛋疼的问题,我就在url后面加了参数userId,它就原地爆炸,去掉参数就ok,我看你的例子里是加了参数的,你的就没问题么?
很抱歉,这么久才看到您的评论。微信的分享要想携带参数只能带一个,也就是“?user=123”这样的,若想多带可使用一个字段拼接上多个参数如“?user=123,王伟,男”,在界面中活在接口中获取到“123,王伟,男”的参数值,根据“逗号”拆分成数组即可
b
boyceman
大哥。同道中人。手动捂脸。但是我这还有个比较蛋疼的问题,我就在url后面加了参数userId,它就原地爆炸,去掉参数就ok,我看你的例子里是加了参数的,你的就没问题么?
寒风之外666
你好 我想请问一下,微信的自定义分享在安卓手机上没有问题,但是在iOS系统微信6.5.7版本就会失效,这个问题怎么解决?谢谢
murphy666
murphy666

引用来自“zhwj407906450”的评论

引用来自“murphy666”的评论

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

回复@zhwj407906450 : 多谢分享,学习了。
zhwj407906450
zhwj407906450

引用来自“murphy666”的评论

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

微信在去年发布JSSDK后,把包括自定义分享在内的众多网页服务接口进行了统一。现在,如果要想自定义分享自己的网页信息给好友或朋友圈,就最好使用这个统一的网页服务接口。没有认证微信号的...

Jack088
2016/05/18
381
0
微信JSSDK分享到朋友圈和朋友自定义内容功能实现

个人小程序。可以扫描体验哦。点击广告此博文代码免费赠予 本博文实现了自定义分享朋友圈、转发朋友、获取网络状态、地理位置、扫一扫等JSSDK接口功能 官网文档。请自行仔细阅读 https://mp...

小帅帅丶
2017/02/21
0
6
进军微信第一步:接入微信JS-SDK

【前言】 某天,接到这么一个需求:自定义微信网页分享出来的标题,描述和图标。以前没玩过这个,感觉应该很简单,动手了之后,躺过各种坑才知道并没那么容易。完全独立研究排错,感受颇多,...

果汁凉茶丶
2017/11/22
0
0
微信中页面二次分享小图标丢失问题

每天踩点坑,每天成长一点点,这样工作才会变得有趣。微信JSSDK踩坑记录。 在我们有房APP1.1的版本中增加了房产资讯的功能,昨天晚上有同事在群里反馈从APP中分享的资讯到微信中,然后再次分...

尹吉欢
05/08
0
0
微信JSSDK开发

在微信中要进行页面自定义标题和内容分享,在2015之前都可以直接使用微信API---WeixinJSBridge,但是2015年1月被废除了。然后有了JSSDK,如果要进行自定义分享,只能先搞懂这个家伙了。 重点...

Reya滴水心
2015/12/17
307
0

没有更多内容

加载失败,请刷新页面

加载更多

win32截屏并rgb24转yuv420

//最终f的内存布局为BGRA格式,需要保证buf长度足够(>w*h*4)void ScreenCap(void* buf, int w, int h){ HWND hDesk = GetDesktopWindow(); HDC hScreen = GetDC(hDesk); ......

styleman
46分钟前
1
0
php输出mysql取出的中文为??的问题

解决方法: @ $db=new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DB); $db->query("set names utf8");//添加此语句,可以解决问题...

Aomo
57分钟前
1
2
白话SpringCloud | 第五章:服务容错保护(Hystrix)

前言 前一章节,我们知道了如何利用RestTemplate+Ribbon和Feign的方式进行服务的调用。在微服务架构中,一个服务可能会调用很多的其他微服务应用,虽然做了多集群部署,但可能还会存在诸如网...

oKong
今天
2
0
【解惑】领略Java内部类的“内部”

内部类有两种情况: (1) 在类中定义一个类(私有内部类,静态内部类) (2) 在方法中定义一个类(局部内部类,匿名内部类) 1、私有内部类 —— 在方法之间定义的内部类,非静态 我们首先看看类中...

偶尔诗文
今天
1
0
sqlserver 2008 r2 直接下载地址(百度云)

之前下载的sqlserver2008发现不能附加,就卸载了,重新找到了sqlserver2008R2的百度云资源 卸载sqlserver2008还是有点麻烦,不过就是需要删除注册表中的信息 自己来回卸载了3次终于重装sqlse...

dillonxiao
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部