热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信H5分享配置详解

本文详细介绍了如何在微信H5中配置分享功能,包括域名配置、引入JS文件、配置信息和调用微信JS-SDK接口等步骤。

微信H5分享功能的配置相对复杂,但通过本文的详细介绍,您可以轻松掌握整个过程。

官方文档:JS-SDK说明文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#1


1. 公众号配置

首先,确保您的公众号为企业账号,并在公众号后台配置好允许访问的域名。


2. 引入JS文件

可以通过两种方式引入微信JS-SDK文件:

  • 通过CDN引入
  • 通过npm引入(推荐)

使用npm引入的步骤如下:

npm install weixin-js-sdk --save-dev

引入依赖模块:

// 1. 直接在需要的页面引入
import wx from 'weixin-js-sdk';
// 2. 或者在main.js中,通过Vue原型链全局引入
import wx from 'weixin-js-sdk';
Vue.prototype.$wx = wx;

3. 配置信息

使用 wx.config 方法配置信息:

// 前置动作
// 1. 将当前页面地址提交给后端,以获取配置信息configData
// 2. 推荐提交当前页面地址和参数:window.location.href
// 3. 提交给后端的页面地址必须在公众后台配置好域名
// 4. 本地调试的域名无法正常使用,可以在本地进行域名解析
var cOnfigData= {
  debug: true, // 开启调试模式
  appId: '', // 必填,公众号的唯一标识(后端提供)
  timestamp: , // 必填,生成签名的时间戳(后端提供)
  nonceStr: '', // 必填,生成签名的随机串(后端提供)
  signature: '', // 必填,签名(后端提供)
  jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'] // 必填,需要使用的JS接口列表
};
$wx.config(configData); // 关键接口

4. 调用微信JS-SDK接口

注意:

  • 调用微信SDK接口时,必须在 wx.config 之后。
  • 调用的接口需要在 wx.configjsApiList 中配置,否则无法使用。
  • 本地调试时,可以尝试“域名重定向”的方式。
  • 分享接口中的URL可以随意填写。
  • 部分SDK接口的参数是必填的,否则会报错。
// 注意:
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后。
// config是一个客户端的异步操作,如果需要在页面加载时调用相关接口,
// 则须把相关接口放在ready函数中调用来确保正确执行。
// 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.ready(function() {
  // 自定义“分享给朋友”及“分享到QQ”
  wx.updateAppMessageShareData({
    title: '', // 分享标题
    desc: '', // 分享描述
    link: '', // 分享链接
    imgUrl: that.pageData.avatar, // 分享图标
    success: function(setSuccess) {
      console.log('设置成功', setSuccess);
    }
  });
  // 自定义“分享到朋友圈”/“分享到QQ空间”
  wx.updateTimelineShareData({
    title: '', // 分享标题
    link: '', // 分享链接
    imgUrl: '', // 分享图标
    success: function(setSuccess) {
      console.log('设置成功', setSuccess);
    }
  });
  // 隐藏所有非基础按钮接口
  wx.hideAllNonBaseMenuItem();
  // 批量显示功能按钮接口
  wx.showMenuItems({
    menuList: ['menuItem:share:timeline', 'menuItem:share:appMessage'] // 要显示的菜单项
  });
});

完整示例:

wxConfig() {
  let that = this;
  var logInPageUrl = window.location.href;
  var logInPageUrl2 = window.location.origin + '/#/?id=' + that.id;
  var jsApiArray = ['showMenuItems', 'hideAllNonBaseMenuItem', 'updateAppMessageShareData', 'updateTimelineShareData', 'hideOptionMenu', 'showOptionMenu'];
  that.$http('wxConfig_api', { url: logInPageUrl }).then(wxCOnfigRes=> {
    if (wxConfigRes.code == 0) {
      var getData = wxConfigRes.data;
      wx.config({
        debug: false, // 开启调试模式
        appId: getData.app_id, // 必填,公众号的唯一标识
        timestamp: getData.timeStamp, // 必填,生成签名的时间戳
        nonceStr: getData.nonceStr, // 必填,生成签名的随机串
        signature: getData.signature, // 必填,签名
        jsApiList: jsApiArray // 必填,需要使用的JS接口列表
      });
      wx.ready(function() {
        // 自定义“分享给朋友”及“分享到QQ”
        wx.updateAppMessageShareData({
          title: that.pageData.true_name + ' ' + that.pageData.position, // 分享标题
          desc: that.pageData.desc, // 分享描述
          link: logInPageUrl2, // 分享链接
          imgUrl: that.pageData.avatar, // 分享图标
          success: function(setSuccess) {
            console.log('设置成功', setSuccess);
          }
        });
        // 自定义“分享到朋友圈”/“分享到QQ空间”
        wx.updateTimelineShareData({
          title: that.pageData.true_name + ' ' + that.pageData.position, // 分享标题
          link: logInPageUrl2, // 分享链接
          imgUrl: that.pageData.avatar, // 分享图标
          success: function(setSuccess) {
            console.log('设置成功', setSuccess);
          }
        });
        // 隐藏所有非基础按钮接口
        wx.hideAllNonBaseMenuItem();
        // 批量显示功能按钮接口
        wx.showMenuItems({
          menuList: ['menuItem:share:timeline', 'menuItem:share:appMessage'] // 要显示的菜单项
        });
      });
      wx.error(function(res) {
        console.error('config信息验证失败', res);
      });
    }
  }).catch(err => {
    console.error('接口错误', err);
  });
}

推荐阅读
  • 本文详细介绍如何使用 Python 集成微信支付的三种主要方式:Native 支付、APP 支付和 JSAPI 支付。每种方式适用于不同的应用场景,如 PC 网站、移动端应用和公众号内支付等。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 作为一名新手,您可能会在初次尝试使用Eclipse进行Struts开发时遇到一些挑战。本文将为您提供详细的指导和解决方案,帮助您克服常见的配置和操作难题。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文介绍如何在Vue项目中配置Webpack,使JS代码作为入口文件直接嵌入到HTML中,而不是传统的HTML作为入口。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文介绍如何使用 Sortable.js 库实现元素的拖拽和位置交换功能。Sortable.js 是一个轻量级、无依赖的 JavaScript 库,支持拖拽排序、动画效果和多种插件扩展。通过简单的配置和事件处理,可以轻松实现复杂的功能。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
author-avatar
崔颖2849464
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有