简介

当我们点击右上角的三个点,就会有默认的分享
分享后的卡片如下

  1. 但是这个时候我们想要改变一些分享的信息,这里我们需要参照微信的官网,点击
  2. 这里我们使用的是updateAppMessageShareData
wx.ready(function () {   //需在用户可能点击分享按钮前就先调用wx.updateAppMessageShareData({ title: '', // 分享标题desc: '', // 分享描述link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致imgUrl: '', // 分享图标success: function () {// 设置成功}})
});

注意

  • 一般在当前页面初始化的时候,就应该调用当前的接口

步骤

  1. 其实我们在页面舒适化中调用函数就可以了,也就是在ready后进行调用
  2. 然后传递各种参数就可以了,不传也会有默认的
  3. 由于我们在开发的时候并不是真机环境,那么这里我们就无法看到效果了

项目结构调整

接下来项目会越做越大,这里我们把项目结构再次调整一下

目录结构

解释

  1. 我们把单独用于自动回复的功能抽了出来,在一个reply文件夹下
  2. 把路由专门抽了出来,在router文件夹下,专门用于管理路由,大致的代码如下

index.js

根目录下的js文件

const express = require("express")
const app = express()const router = require("./router")// 配置模板资源目录
app.set("views", "./views")
// 配置模板引擎
app.set("view engine", "ejs")
app.use(router)app.listen(4000, () =>console.log("服务器启动成功"));

router/index.js

const express = require("express")
const Router = express.Router
const router = new Router()
const sha1 = require("sha1")const reply = require("../reply")
const Wechat = require("../wechat/wechat")
const { url } = require("../config")const wechat = new Wechat()router.get("/search", async (req, res) => {// 首先生成签名// 1. 获取到参数const { ticket } = await wechat.fetchTicket()const timestamp = Date.now(), jsapi_ticket = ticket, noncestr = Math.random().toString().split(".")[1]// 2. 进行字典排序const str = [`jsapi_ticket=${jsapi_ticket}`,`timestamp=${timestamp}`,`url=${url}/search`,`noncestr=${noncestr}`,].sort().join("&")console.log("str", str)// 3. 进行sha1加密const signature = sha1(str)// 4. 将相关的参数传入到网页中res.render("search", { signature, noncestr, timestamp, appID })
})router.use(reply())module.exports = router

reply/index.js

const sha1 = require("sha1")const config = require("../config")
const { getUserDataAsync, parseXmlData, formatMsg } = require("../libs/utils")
const reply = require("./reply")module.exports = () => {return async (req, res, next) => {const { signature, echostr, timestamp, nonce } = req.queryconst { token } = configconst str = [token, timestamp, nonce].sort().join("")const sha1str = sha1(str)if (req.method === "GET") {// GET请求用于验证服务器的有效性if (sha1str == signature) {res.set("Content-Type", "text/plain");res.send(echostr);} else {res.send(false)}} else if (req.method === "POST") {// POST用于接收用户发送的消息if (sha1str != signature) {// post请求不是来源于微信res.send("error")return}// 获取微信发送的消息const xml_data = await getUserDataAsync(req)let user_data = await parseXmlData(xml_data)user_data = formatMsg(user_data)// 使用reply.jsconst replyMessage = await reply(user_data)console.log(replyMessage)// 将消息结构发送到微信服务器res.send(replyMessage)}}
}

其他的就是修改一些文件的引入之类的

微信公众号之分享接口相关推荐

  1. 公众号分享页面php,微信公众号网页分享功能开发的示例代码

    现在每天都可以看到很多微信分享的链接上面有网站或者商家的自定义的分享标题,和分享链接的描述及分享出去的图像,例如下面的分享出去的链接: 上面这个是微信的js-SDK页面分享给微信好友在聊天列表中显示的 ...

  2. php实现微信公众号分享,php实现微信公众号自定义分享内容的方法

    这篇文章主要介绍了php版微信公众号自定义分享内容实现方法,结合实例形式分析了php实现微信公众号自定义分享内容的接口调用与相关使用技巧,需要的朋友可以参考下 微信公众号号在手机中通过api接口可以实 ...

  3. 微信公众号jssdk 分享/App原生应用接入分享开发及应用场景

    文章目录 前言 一.应用场景 二.Jssdk 接入准备工作 1.申请企业版微信公众号,并进行认证,并设置成为开发者 2.公众号配置 3.查看appid.设置密钥.并配置ip 白名单等 三.开发接入 1 ...

  4. vue微信公众号页面分享

    vue微信公众号页面分享 utils=>share.js const wx = require("weixin-js-sdk"); // 这块因为我们业务是必须在公众号里面的 ...

  5. php实现微信公众号分享,php版微信公众号自定义分享内容实现方法

    搜索热词 PHP版微信公众号自定义分享内容实现方法,希望对您有用.如果有疑问,可以联系我们. PHP版微信公众号自定义分享内容实现方法.分享给大家供大家参考,具体如下: 自定义分享内容了,下面我们来看 ...

  6. 微信公众号自定义分享IOS失效

    微信公众号自定义分享在IOS端遇到的问题:设置的分享链接如果和当前页面的url不一致就会失效,打开后白页. 解决思路:首先保证分享出去的页面都可以正常访问,然后在路由做页面访问限制,一般情况下,我们希 ...

  7. 微信公众号查题接口API

    微信公众号查题接口API 本平台优点: 多题库查题.独立后台.响应速度快.全网平台可查.功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击跳 ...

  8. php 公众号指定人发消息,微信公众号客服接口给指定用户openid发送消息

    微信公众号客服接口给指定用户openid发送消息 2018-09-23 微信开发文档: 客服接口-发消息 接口调用请求说明 http请求方式: POSThttps://api.weixin.qq.co ...

  9. PHP curl模拟表单上传文件 微信公众号素材管理接口crul文件上传核心源码

    PHP curl模拟表单上传文件  微信公众号素材管理接口crul文件上传核心源码 /*** curl 上传文件* @param $url* @param $filePath* @param stri ...

  10. 微信公众号文章搜索接口9大详解

    微信公众号作为一个重要的自媒体平台,越来越受到人们的关注.而对于那些想要提高自己公众号文章点击率的人来说,微信公众号文章搜索接口是一个不可或缺的工具.本文将从以下9个方面详细介绍微信公众号文章搜索接口 ...

最新文章

  1. php exec和query,关于Go SQL中的Query、Exec和Prepare使用对比(附网络抓包)
  2. Vue CLI3.0 中使用jQuery 和 Bootstrap
  3. HDFS概述(6)————用户手册
  4. Android之Camera拍照
  5. 研究理解lanproxy实现内网穿透
  6. 中兴笔试题:打家劫舍【动态规划】
  7. IOS – OpenGL ES 图像侵蚀边缘色彩模糊 GPUImageRGBErosionFilter
  8. linux系统下的打印机驱动下载,用于UNIXLinux系统的打印机驱动程序-Lexmark.PDF
  9. Hexo之next主题优化
  10. D511 外置功放软件烧录方法
  11. cad画直角命令_CAD直线怎么画?直线命令快捷键是什么
  12. 自己动手编写CSDN博客备份工具-blogspider
  13. 查询每门课程被选修的学生数
  14. OffiSmart Summit智慧办公及空间管理上海线下峰会精彩亮点抢先看
  15. 教程篇(7.0) 04. FortiGate安全 NAT ❀ Fortinet 网络安全专家 NSE 4
  16. Visual Studio Code使用教程
  17. Android学习之nbsp;Launcher抽屉类Slid…
  18. 如何计算 R 中 Z 分数的 P 值
  19. 视源股份(CVTE)亮相世界顶级计算机视觉盛会CVPR 2017
  20. 燃气热水器打不着火水压低的解决方法(zt)

热门文章

  1. hugo搭建个人博客
  2. xmind怎样画流程图_【工作流程图】如何用xmind做流程图
  3. FOI 2019 游记
  4. 内存超频时序怎么调_一个傻瓜式内存超频教程
  5. swapfile.sys文件的作用及如何禁用Hibernate.sys和Pagefile.sys
  6. CC2430 串口使用详解
  7. 如何让Word表格文字上下居中?
  8. 云计算与大数据——云计算的特点
  9. matlab中的semilogy,MATLAB 函数Semilogy()
  10. 爱思助手更新后无法连接服务器,爱思助手出现无法连接或连接超时的操作教程...