转自:https://www.cnblogs.com/backtozero/p/7064247.html

前言

刚进入一家新公司,接到的第一个任务就是需要需要自定义微信分享的效果(自定义缩略图,标题,摘要),一开始真是一脸懵逼,在网上搜索了半天之后大概有了方案。值得注意的是一开始搜索到的解决方案全是调用微信的自带的JS-SDK,然而腾讯是不会让广大吃瓜群众这么轻而易举的调用他们的东西的。微信开发团队已经把调用的权限收回,现在无法直接在页面直接调用JS-SDK了。话不多说,直接上干货。

预期效果

原始的分享效果:

使用微信JS-SDK的分享效果:

可以看出缩略图,标题,摘要样式良好,给用户的体验很好。

准备工作

微信官方开发者文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

现在的思路已经很明确了,就是通过调用微信的JS-SDK实现自定义分享效果。但是这个调用过程比较繁琐,需要提前准备如下东西:

(1)微信服务号一个,并且已经通过了实名认证;

   没有实名认证的话,一些接口没有调用权限。

(2)一个ICP备案的域名;

这个域名需要设置为微信公众号后台的JS接口安全域名,否则微信仍然不允许调用它的接口。

这时大家应该就犯难了,这样的话岂不是不能在本地测试,只能部署到生产环境才能测试?不用着急,解决方案告诉大家:花生壳的内网穿透服务(收费,20元以内)

花生壳官网:http://hsk.oray.com/price/#personal

选择个人免费版就可以了,虽然说是免费版,但是其实注册过程中还是要收几块钱的,因为我自己买了域名和流量所以花的钱更多一些,但也在20元以内。不建议大家购买流量,送的流量可以用很久了。

当准备好上面提到的就可以开始敲代码了。

(3)安装微信开发者工具,用于本地调试。

下载地址:https://mp.weixin.qq.com/debug/cgi-bin/webdebugger/download?from=mpwiki&os=x64

官方使用教程:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140

具体步骤

(1)查看AppId,AppSecret以及绑定域名

进入微信后台,找到下面的菜单

获取AppID和AppSecret

设置JS接口安全域名

注意第三步,如果微信服务器不能在我们的服务器上访问到这个txt文件,域名是无法设置成功的,这里先告诉大家在哪里设置,想要成功设置域名还需要使用花生壳的服务,让微信服务器访问我们本地工程中的的txt文件才行。

hkh3321313.vicp.io是在花生壳上购买的域名,免费送的域名是在太难记了,完全不能忍。

(2)引入JS文件

这里需要注意是http还是https,如果生产环境是https,务必前缀是https,都则会出现mix content这样的错误,导致引入失败。

<script typet="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

(3)通过AppId和AppSecret请求accessToken,然后通过accessToken获取jsapi_ticket,生成config接口所需参数

因为获取这两个参数的次数是有限制的(accessToke 每日2000次,jsapi_ticket 每日100000次),有效期是7200秒,每两小时请求一次就行啦,把获取的accessToke和jsapi_ticket保存在后台,所以accessToken和jsapi_ticket这两个参数的获取是通过ajax方式请求后台,而不是实时去获取的。

config几个参数需要详细说明一下:

  1. timestamp  生成签名的时间戳  create_nonce_str()
  2. nonceStr  随机生成的字符串 create_timestamp()
  3. signature  按照微信文档签名算法生成的签名 makeWXTicket()

附上signature算法的官方说明:

https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.15697429783636763#buzhou3

在附录1中可以找到详细说明。

此外,官方提供了一个签名算法的校验工具:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

下面只附上了主要的方法:

//获取accessToken
private JSONObject getAccessToken(){//String accessTokenUrl= https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRETString requestUrl = accessTokenUrl.replace("APPID",appId).replace("APPSECRET",appSecret);log.info("getAccessToken.requestUrl====>"+requestUrl);JSONObject result = HttpUtil.doGet(requestUrl);return result ;
}


http://www.taodudu.cc/news/show-6083843.html

相关文章:

  • 微信自定义分享、二次分享解决方案
  • 企业微信开发,嵌入自定义项目,及JS-SDK的引用
  • 微信小程序授权登陆,解密encryptedData出现乱码问题
  • Ubuntu18.04之微信中文乱码解决(五十八)
  • 微信小程序:页面传递中文出现乱码
  • 微信小程序获取带表情的微信名乱码问题
  • 微信开发获取昵称乱码 emoji表情
  • 关于微信小程序与Java后台交互数据中中文乱码问题的讨论
  • 微信小程序中文乱码
  • 解决Charles手机抓包出现unknown和乱码的问题
  • 微信小程序解密出来是乱码的问题
  • Charles 解决抓包显示乱码问题 - 已解决
  • 解除父子关系
  • (7)解除预制体关系Break Prefab Instance(Unpack Prefab)
  • 我失业了,公司与我解除劳动合同关系
  • redis解除(删除)主从关系
  • Spring Data Neo4j解除两个节点之间的关系
  • 对象之间的关联关系
  • Unity子物体脱离父物体,解除父子关系,子物体不随父物体移动
  • 联系-关系模式
  • 劳动仲裁解除劳动关系要多长时间
  • 解除同居关系时共同财产的分割
  • 单位可不可以起诉来解除劳动关系
  • 约束和约束关系
  • 一对一关联关系
  • 事件(一)绑定与解除事件
  • 关系模式(关系模式必须遵循)
  • 违反和解除劳动合同的经济补偿办法
  • 单位提前解除劳动关系怎么赔偿
  • Hibernate 关联关系解除

微信二次分享解决图标文案失效方案相关推荐

  1. php微信二次分享出错,解决微信二次分享bug

    微信分享网页后,再次点击微信分享的内部会自动在网址后拼接&from=来源,导致二次分享的图案文案失效,解决办法: function getQueryString(name) {//根据字段看网 ...

  2. 解决微信二次分享bug

    微信分享网页后,再次点击微信分享的内部会自动在网址后拼接&from=来源,导致二次分享的图案文案失效,解决办法: function getQueryString(name) {//根据字段看网 ...

  3. 微信二次分享签名错误php,微信二次分享报错invalid signature问题及解决方法

    基于微信公众号开发的h5页面(使用jssdk接口),由用户A分享给用户B,用户B再次分享这个页面时,不能成功分享.问题出在用户B收到的分享链接与用户A打开的链接不同 A用户的链接为 B用户收到的连接 ...

  4. 解决微信二次分享失败--后面被加上from=singlemessageisappinstalled=0的解决方案

    解决微信二次分享失败--后面被加上from=singlemessage&isappinstalled=0的解决方案 参考文章: (1)解决微信二次分享失败--后面被加上from=singlem ...

  5. 微信二次分享解决方案

    最近项目中开发需要在微信端二次分享分享H5页面,但是第一次分享的时候安卓没有问题,ios有时成功有时失败,并且二次分享的时候安卓还是没有问题,ios一次成功都没有,后来查阅文档搜索资料终于解决了,一下 ...

  6. 安卓微信二次分享不显示描述和图片

    问题描述 在做微信分享的时候有遇到过这样的问题,,第一次分享到微信,描述和图片都能正常显示,但是打开连接用微信自带的分享功能进行分享时,就会出现以下情况:描述变链接.图片不显示.标题变更. 导致的原因 ...

  7. 微信 ajax 2次,微信二次分享失败问题解决

    自定义微信分享标题及描述的基本流程: 首先引入微信jssdk : 发送ajax请求将浏览器分享的地址(window.location.href.split("#")[0])发送到后 ...

  8. 微信二次分享(标题、摘要、缩略图)

    微信二次分享 目的 要求 准备工作 代码逻辑 结束 总结 目的 公司需要实现一个手机在微信分享的网页带标题.摘要和缩略图的功能,查看了微信开发文档,是一个二次分享比较简单的功能,下面开始写代码吧 要求 ...

  9. 「微信二次分享」➡️ 自定义标题和图片

    项目场景: 提示:一般用于已经分享到朋友圈的h5页面,打开之后点击右上角...再次分享给好友和朋友圈的文章标题和图片配置 微信官方开放文档 微信开放文档 代码: <template>< ...

最新文章

  1. 越南一难倒博士的趣味数学题
  2. JAVA Calendar具体解释
  3. 百分点宣布完成C轮融资2500万美元 将进一步开放云平台应用
  4. Python+selenium 自动化-切换窗口页签、切换iframe框架。确定页面是否包含iframe方法。
  5. vue3+TypeScript封装echarts5组件
  6. 一道水的不能再水的题目
  7. (STTN)Learning Joint Spatial-TemporalTransformations for Video Inpainting
  8. Theano 中文文档 0.9 - 5.4 CentOS 6安装说明
  9. HDU 1026 广度优先搜索,BFS+路径的记录
  10. LeetCode5. 最长回文子串
  11. [2010-8-22]
  12. Allegro导出STP文件
  13. Linux电源管理-wakelock
  14. Cisco策略路由(policy route)精解(转载)
  15. Monitor HDU6514 二维差分入门学习
  16. ESP32-WROOM-32E,WIFI基本功能实现,采坑经验
  17. 检测iPhone 12绿屏技巧 苹果12绿屏检测方法
  18. HJ70 矩阵乘法计算量估算 ——
  19. select2搜索内容显示搜索词
  20. jsp未正确拼写字 mysql_JAVA字符编码

热门文章

  1. JavaWeb-云日志
  2. 游戏公司盯上了区块链:是机会,还只是一场游戏?
  3. 有没有什么帮助睡眠的东西?助眠效果好的东西分享
  4. 计算机参数含义,电脑内存条参数各有什么含义?
  5. 实战虚拟化存储设计之LUN Sizing
  6. 写一个矩阵相乘的函数
  7. 从图片到涂鸦:高品质涂鸦的自动生成
  8. 什么品牌的蓝牙耳机音质最好?高品质蓝牙耳机排行榜
  9. PHP基础知识【大纲】
  10. Codeforces Round #439 (Div. 2) E. The Untended Antiquity(二维BIT)