文档章节

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

帝听
 帝听
发布于 2017/04/30 23:19
字数 1688
阅读 489
收藏 1
点赞 3
评论 10

引言

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

问题现象

        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
博文 7
码字总数 3374
作品 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
进军微信第一步:接入微信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
微信公众号-- 微信分享功能(分享到朋友和朋友圈显示图片和简介)

1.效果图对比 2.之前踩过的坑 页面设置一个隐藏的图片,宽高都是300像素,微信就会抓取这张图片做为分享图片 链接:blog.csdn.net/aoshilang22… 结果: 并没有什么效果,原因:微信对自定义...

a独家记忆
06/27
0
0
微信分享给朋友无响应

问题: 使用微信jssdk接口自定义分享内容,点击分享到朋友圈和QQ都是有响应的,点击分享给朋友的按钮没有反应。 设备环境: 无反应问题只出现在IOS设备,Android设备有反应,但是分享内容不是...

coton_chen
2016/07/19
456
0
微信卡券

一、卡券的基本流程: 1、创建(商家创建) 2、投放(粉丝消费) 3、核销(商家核对使用,对接接口) 二、卡券限制条件: 开通微信支付 卡券一直未通过审核:可能是由于公共号的经营类别和你...

CurtainRight
2016/09/06
103
0
C#开发微信门户及应用(44)--微信H5页面开发的经验总结

在我们开发微信页面的时候,需要大量用到了各种呈现的效果,一般可以使用Boostrap的效果来设计不同的页面,不过微信团队也提供很多这方面的资源,包括JSSDK的接口,以及Weui的页面样式和相关...

walb呀
2017/12/04
0
0
小程序开发 - webview

小程序开发 - webview 会飞的污熊2018-01-031 阅读 webView 最近要做一个项目需要在小程序中打开外链,小程序最近开放了web-view组件,可在里面内嵌自己写的H5页面,也就实现了打开外链的功能...

会飞的污熊
01/03
0
0
微信 JSSDK 报 config:invalid signature 错误

在微信公众号开发中遇到自定义分享内容。使用 JSSDK 的时候一直报 config:invalid signature 错误。 大家可以先参考一下腾讯的官方说明。 然后需注意一下几点: 签名要用到的jsapi_ticket需要...

Jack088
2016/05/18
162
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
1
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
今天
2
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
1
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
2
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
1
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部