其他分享
首页 > 其他分享> > 公众号分享功能的实现

公众号分享功能的实现

作者:互联网

1.公众平台配置ip白名单  https://mp.weixin.qq.com/

      设置与开发  》  基本配置  》 公众号开发信息 》 ip白名单  接口地址对应的ip

2.业务域名和JS安全域名的设置 

      设置与开发  》  公众号设置  》 功能设置  》  业务域名和JS安全域名 

      在设置的时候有个txt需要放到前端的public文件夹下面

3.weixin-js-sdk 的安装

       npm install weixin-js-sdk

4.开始贴代码了

在main.ts 引入  import '@/utils/wx/wx.config'

    wx.config.ts  文件   

import wx from 'weixin-js-sdk'
import { getWxJssdk } from '@/apis/wx.api'
import { Toast } from 'vant'
const w = (window as any)
if (typeof w.entryUrl === 'undefined' || w.entryUrl === '') {
  w.entryUrl = location.href.split('#/')[0]
}
// 进行签名的时候  Android 不用使用之前的链接, ios 需要
const signLink = /(Android)/i.test(navigator.userAgent) ? location.href.split('#')[0] : w.entryUrl;

(async function () {
  const config:any = await getWxJssdk(signLink)
  // Toast({
  //   message: `${JSON.stringify(config)} --- ${signLink}`,
  //   duration: 10000
  // })
  // console.log(signLink, 'signLink')
  wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    beta: false,
    appId: config.appId, // 必填,公众号的唯一标识
    timestamp: config.timestamp, // 必填,生成签名的时间戳
    nonceStr: config.nonceStr, // 必填,生成签名的随机串
    signature: config.signature, // 必填,签名,见附录1
    jsApiList: [
      'updateAppMessageShareData',
      'updateTimelineShareData'
    ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2,
  })
})()

wx.function 

import wx from 'weixin-js-sdk'

interface ShareOptionsProps {
  title: string;
  desc?: string;
  link: string;
  imgUrl?: string;
  success?: (res?:any) => {}
}

/**
  * 分享链接
  * @param data
  */
export function setWxShare (shareOptions: ShareOptionsProps) {
  const { title, desc, link, imgUrl, success } = shareOptions
  console.log(title, desc, link, imgUrl)
  wx.ready(function () {
    // 分享给朋友
    wx.updateAppMessageShareData({
      title, // 分享标题
      desc, // 分享描述
      link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl, // 分享图标
      success: function (res: any) {
        success && success(res)
      }
    })

    // 分享给朋友圈
    wx.updateTimelineShareData({
      title, // 分享标题
      link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl, // 分享图标
      success: function (res: any) {
        success && success(res)
      }
    })
  })
}

 在routes路由文件配置mate

    

 meta: {
      title: '爆品构件推荐',
      shareTitle: 'PC构件目录',
      shareDesc: '大乐装 | 装配式建筑一站式交付平台',
      shareUrl: location.origin
    }

 最后路由守卫里的处理  main.ts 引入  import '@/routers/guard'

guard.ts

import { setWxShare } from '@/utils/wx/wx.function'
import router from './index'

const DETAULT_SHARE_IMG_URL = 'https://cz-filemino.dalezhuang.com/template/799008d73916462d88dc4976417e6cf0.png'

router.beforeEach((to, from, next) => {
  const url = location.href
  if (to.meta) {
    document.title = to.meta.title as string
    const { shareTitle, shareDesc, shareUrl, shareImgUrl } = to.meta as any
    setWxShare({
      title: shareTitle,
      desc: shareDesc,
      link: shareUrl || url,
      imgUrl: shareImgUrl || DETAULT_SHARE_IMG_URL
    })
  }
  next()
})

router.afterEach((to) => {
  if (!to.meta?.keepAlive) {
    window.scrollTo(0, 0)
  }
})

  

完了!!!   摘要: https://blog.csdn.net/jlq_diligence/article/details/119704631    

标签:功能,const,success,title,公众,import,分享,config,wx
来源: https://www.cnblogs.com/daifuchao/p/16455135.html