在做h5页面分享时,用到了微信的自定义分享js-sdk  。

有时会不显示自定义的图片和描述。分步骤检查出现的问题:

调用config 接口的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息。以下为常见错误及解决方法:

1.invalid url domain当前页面所在域名与使用的appid没有绑定,请确认正确填写绑定的域名,仅支持80(http)和443(https)两个端口,因此不需要填写端口号(一个appid可以绑定三个有效域名,见 ]目录1.1.1)。

2.invalid signature签名错误。建议按如下顺序检查:

1.确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。

2.确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。

3.确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。

4.确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。

5.确保一定缓存access_token和jsapi_ticket。

6.确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。

3.the permission value is offline verifying这个错误是因为config没有正确执行,或者是调用的JSAPI没有传入config的jsApiList参数中。建议按如下顺序检查:

1.确认config正确通过。

2.如果是在页面加载好时就调用了JSAPI,则必须写在wx.ready的回调中。

3.确认config的jsApiList参数包含了这个JSAPI。

4.permission denied该公众号没有权限使用这个JSAPI,或者是调用的JSAPI没有传入config的jsApiList参数中(部分接口需要认证之后才能使用)。

5.function not exist当前客户端版本不支持该接口,请升级到新版体验。

检查了这些之后,发现有时分享可以显示自定义的图片和描述,有时不可以。

1、在网上搜索说是1.4.0的版本的分享到朋友圈和发送给朋友的api(1.4.0新版本:updateTimelineShareData和updateAppMessageShareData)要用旧版本(旧版本:onMenuShareTimeline和onMenuShareAppMessage)的,但是我线上替换成旧版本的还是不行。但是看后台打印的日志是获取不到jsapi_ticket了,发现是后台的原因,只能后台人员去解决了。

2、用的是前台发送url给后台接口,这个url需要encodeURIComponent,后台再decodeURIComponent,然后后台接口返回timestamp  、nonceStr和signature,代码如下:

$(function () {var winUrl = window.location.href.split("#")[0];/* if(winUrl.indexOf('from=singlemessage')>0 || winUrl.indexOf('isappinstalled')>0){winUrl = winUrl.split('?from=singlemessage')[0]} */var meta = document.getElementsByTagName('meta');var share_desc = '';for (i in meta) {if (typeof meta[i].name != "undefined" && meta[i].name.toLowerCase() == "description") {share_desc = meta[i].content;}}$.ajax({type: "post",url: "/post/getShareSignature",crossDomain: true,dataType: "json",contentType: "application/json; charset=utf-8",data: JSON.stringify({"articleUrl": encodeURIComponent(winUrl)}),success: function (msg) {//console.log(" timestamp:" + msg.data.timestamp + " ; noncestr:" + msg.data.noncestr + ";  signature:" + msg.data.signature);wx.config({debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId: "wx91f855a7c7f4187b", // 必填,公众号的唯一标识timestamp: msg.data.timestamp, // 必填,生成签名的时间戳nonceStr: msg.data.noncestr, // 必填,生成签名的随机串signature: msg.data.signature, // 必填,签名,见附录1jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2});wx.ready(function () {var title, img_url;if (winUrl.indexOf('post') != -1) {//IOS系统分享时读取图片路径会出现问题 用 encodeURI 来处理下title = $("#articleTitle").val();img_url = encodeURI($("#coverImg").val());} else if (winUrl.indexOf('school') != -1) {title = document.title;img_url = encodeURI($("#schoolBadge").attr("src"));} else if (winUrl.indexOf('seventy') != -1) {title = document.title;img_url = encodeURI('https://xsn.com.cn/fileDir/cnypaData/seventy.jpg');} else {title = document.title;img_url = encodeURI(location.href.split('.cn/')[0] + '.cn/img/Group.png')}//分享到朋友圈wx.onMenuShareTimeline({title: title, // 分享标题link: winUrl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl: img_url, // 分享图标success: function () {console.log('已分享');},cancel: function () {console.log('已取消');},fail:function(res){alert(JSON.stringify(res))}}); //分享给微信好友wx.onMenuShareAppMessage({title: title, // 分享标题desc: share_desc,link: winUrl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl: img_url, // 分享图标type: '', // 分享类型,music、video或link,不填默认为linksuccess: function () {console.log('已分享');},cancel: function () {console.log('已取消');},fail:function(res){alert(JSON.stringify(res))}});wx.error(function (res) {console.log("res:", res)})});},error: function (XMLHttpRequest, textStatus, errorThrown) {console.log("error" + errorThrown);}});})//  微信js - sdk分享 end

3、另一个原因是后台只缓存了acess_token,没有缓存jsapi_ticket。这就又把问题抛到后台了(大笑,来回踢皮球,哈哈哈)。然后只能后台去找原因了。从后台打印出的日志来看,凡是分享不显示图片和描述的,都是jsapi_ticket没获取到为null,分析有可能是没有缓存jsapi_ticket导致的,微信这边做了限制,必须缓存jsapi_ticket和access_token。

参考链接:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115   附录5-常见错误及解决方法  这里微信有说明。官网帮你找问题。哈哈哈

https://segmentfault.com/q/1010000002520634

微信js-sdk 微信自定义分享显示图片和描述不显示相关推荐

  1. java 配置微信js sdk,微信JSSDKconfig接口注入权限验证配置的参数获取--java版

    步骤看官网文档,这里只有java后台代码 签名工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmE ...

  2. 微信js sdk 分享 失败 有时候好 有时候坏

    微信js sdk 分享 失败  有时候好 有时候坏 用了一个www开头的域名 和一个xx.com的域名 两个在解析上有问题. 实践是www.xx.com的比较 稳定 转载于:https://www.c ...

  3. 微信内 H5 页面自定义分享

    起源: 最近公司在做一个活动的h5页面,在微信内打开时需要进行微信授权,然后后端会重定向到这个页面并且携带了一些参数(openid等).问题是点击微信的原生分享时,会把携带的这些参数一起分享出去,等于 ...

  4. 使用微信js sdk关于选择及上传图片至腾讯云COS

    使用微信js sdk关于选择及上传图片至腾讯云COS 使用微信js sdk关于选择及上传图片至腾讯云COS 背景 名词 参考 效果图展示 开发步骤 1:概要步骤 2:上代码 结束: 使用微信js sd ...

  5. 微信js sdk 授权上传头像下载代码片段和注意事项

    /*  * 描述:当前页授权  * @param url   例:index.html / 如果有参数,需加密index.html?id=1     */ 1.对需要运用js sdk的页面授权 get ...

  6. 微信转发链接不显示图片和描述文字

    微信转发链接不显示图片和描述文字,只显示标题. 如果你觉得排除了代码的错误. 那就可能是因为没有绑定正确的公众号$appid和$appsecret 不清楚,之前的微信链发代码,是不是需要这两样,现在是 ...

  7. 微信JS SDK开放,前端开发者“鸡冻”了!

    HTML5又一次逆袭了,其实之前微信也是有一些JS API的,比如分享.但这次一股脑开放了拍摄.录音.语音识别.二维码.地图.支付.分享.卡券等几十个API,这条消息不需宣传,瞬间就占满了HTML5从 ...

  8. 微信小程序之——自定义分享按钮(完整版)

    声明 onShareAppMessage 函数 onShareAppMessage() { return {          title: '弹出分享时显示的分享标题'        desc: ' ...

  9. 微信分享带图片,描述(php版)

    最近在为一个php网站添加微信分享带图片,描述的功能,这个功能之前了解过,但并没有彻底实现过,这个功能需要认证的公众号支持. 第一步:在已经认证的公众号配置安全域名(网上很多教程) 第二步:在微信公众 ...

最新文章

  1. MySQL 代码结构与基本流程
  2. 【js】小数点后保留两位小数
  3. C语言的time函数
  4. G7创始人翟学魂:货运物流正在被IoT重构,卡车流量也能反映GDP走向 | MEET2021...
  5. iReport工具的使用(三)
  6. 关于嵌入式学习随笔-6《NVIC中断优先级管理》
  7. 您已关注公众号满1年,诚邀您免费加入金融学习交流群!
  8. php mysql关键技术_中高级PHP开发者应该掌握哪些技术?
  9. CPU vector operations
  10. python 相对导入_Python相对导入机制详解
  11. 【优化调度】基于matlab粒子群算法求解水电厂优化调度购电最小问题【含Matlab源码 1234期】
  12. 虚拟机xfs文件系统因根分区爆满损坏修复
  13. 这次把怎么做好一个PPT讲清-画图篇
  14. 在不同领域,大家用爬虫怎么盈利的-Java网络爬虫系统性学习与实战系列(4)
  15. 要求用户在Python中输入整数| 限制用户仅输入整数值
  16. [ 重 新 预 习 ] Node.js搭建服务
  17. 大一计算机专业学期计划范文,大一学期的个人学习计划范文(精选5篇)
  18. 【GCC】2: RTCP cc-feeback 抓包对比协议
  19. 亚马逊营销和运营手法的运用知多少?
  20. AD原理图编译错误:Details Duplicate pins in component Pin ×× and Pin ××

热门文章

  1. 清理Win10系统C盘的脚本方法
  2. python全栈工程师薪水_python全栈+爬虫+自动化+AI=python全能工程师-挑战年薪30W+
  3. 双千兆网口路由器方案开发板香橙派R1 Plus LTS连接USB无线网卡测试说明(OpenWRT 系统)
  4. hive学习笔记-数据操作
  5. java获取系统时间差_java获取系统时间与实际相差8小时的解决方法
  6. 德州仪器TI芯片实时监控自动抢购
  7. 基于vue技术栈制作自己的简历网站问题总结篇(入门vue基础项目)
  8. phpexcel mysql 导出_PHPEXCEL结合MYSQL+PHP实现数据库数据导出EXCEL实例
  9. Codeforces Round #800 (Div. 2) E. Keshi in Search of AmShZ
  10. Android 比Zing 更快的二维码 条形码扫描Zbar