微信公众号之分享接口

本文介绍了如何在微信小程序中使用updateAppMessageShareData接口自定义分享信息,包括设置分享标题、描述、链接和图标。同时,展示了项目结构调整的过程,将自动回复和路由管理模块独立出来,以适应项目规模的增长。代码示例中涉及了Express.js、路由配置和微信API的使用。
摘要由CSDN通过智能技术生成

简介

当我们点击右上角的三个点,就会有默认的分享在这里插入图片描述
分享后的卡片如下在这里插入图片描述

  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.query
        const { token } = config
        const 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.js
            const replyMessage = await reply(user_data)
            console.log(replyMessage)
            // 将消息结构发送到微信服务器
            res.send(replyMessage)
        }
    }
}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值