VUE项目引入微信JSSDK 实现自定义分享

前端vue、后端php

问题:后端获取config参数所需的url 需要和请求自定义分享页面url一致

一、微信公众号后台添加 js安全域名(白名单)

二、(前端) VUE引入微信JSSDK

1、yarn add weixin-js-sdk或者npm install weixin-js-sdk --save-dev
2、封装wx分享功能
在asset中新建wx.js

import axios from "axios";
import wx from 'weixin-js-sdk';
//初始化微信sdk
const wxShowMenu = shareData => {return new Promise((resolve, reject) => {axios.get("******") //请求你们公司后台的接口 获取相关的配置.then(res => {var getMsg = res.data;// console.log("微信配置----------")wx.config({debug: false, //生产环境需要关闭debug模式  测试环境下可以设置为true 可以在开发者工具中查看问题appId: getMsg.appId, //appId通过微信服务号后台查看timestamp: getMsg.timestamp, //生成签名的时间戳nonceStr: getMsg.nonceStr, //生成签名的随机字符串signature: getMsg.signature, //签名jsApiList: [ //需要调用的JS接口列表"updateAppMessageShareData", //自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0) 新接口"updateTimelineShareData", //自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0) 老接口"onMenuShareTimeline", //分享到朋友圈 老接口"onMenuShareAppMessage",//分享给盆友 老接口]});wx.error(function (res) {//alert(JSON.stringify(res))console.log(res)// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。});wx.ready(function () {wx.onMenuShareAppMessage({title: shareData.tTitle,link: shareData.timeLineLink,imgUrl: shareData.imgUrl,desc: shareData.tContent,success: function () { }});wx.onMenuShareQQ({title: shareData.tTitle,link: shareData.timeLineLink,imgUrl: shareData.imgUrl,desc: shareData.tContent,success: function () { }});wx.onMenuShareTimeline({title: shareData.tTitle,link: shareData.timeLineLink,imgUrl: shareData.imgUrl,success: function () { }});});resolve(res);},err => {reject(err);});});
};
export { wxShowMenu };

3、在要使用自定义分享的页面中引入wx.js,并自定义分享内容

 import { wxShowMenu } from "../assets/wx";//初始化分享信息wxShareInfo(data) {var vm = this;var shareData = {imgUrl: data.share_info.pic, //域名在白名单中timeLineLink:data.share_info.url,//域名在白名单中tTitle: data.share_info.title,tContent: data.share_info.content};//调用初始化方法wxShowMenu(shareData).then(res => {console.log(res);},err => {console.log(err);});},

二、(后端)php生成config参数返回

没有使用前端传当前url的形式,直接获取了request 中的REFERER,一层请求可以。
如果有多层调用还是需要用传url的形式!url是页面完整的url,location.href.split(’#’)[0]为了排除微信自己添加的参数,encodeURIComponent处理后传给后端,后端再解析。

后端api接口

<?php
define("APPID","***");
define("APPSECRET","*****");
include_once('wx_js_sdk_http.php');
$ourl = $_SERVER['HTTP_REFERER'];
$jssdk = new JSSDK(APPID, APPSECRET,$ourl);
$signPackage = $jssdk->getSignPackage();
echo json_encode($signPackage);

wx_js_sdk_http.php之前写过php脚本式的获取方式
只需要修改几处即可

     //添加$Ourl外部传入的请求urlpublic function __construct($appId, $appSecret,$Ourl) {$this->appId = $appId;$this->appSecret = $appSecret;$this->Ourl = $Ourl;}....//修改使用的url为传入的//$protocol = $_SERVER['HTTP_X_FORWARDED_PROTO']=='https'? "https://" : "http://";//$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";$url = $this->Ourl;...

VUE项目引入微信JSSDK 实现微信自定义分享相关推荐

  1. vue项目中,使用微信js-sdk打开微信内置导航,唤醒第三方导航,

    vue项目中,使用微信js-sdk打开微信内置导航,唤醒第三方导航 一.准备工作 二.开发须知 三.开始安装sdk 四.通过微信的config接口注入权限验证配置 附上代码 最近在搞vue项目需要在手 ...

  2. vue项目引入微信sdk报错记录

    前言 vue项目引入微信sdk $ npm install weixin-js-sdk --save 运行报错如下: npm install weixin-js-sdk --save下载失败显示未配置 ...

  3. vue项目html引入css,vue项目引入自定义.css的样式文件

    ES6的引入方式: .vue文件中 css文件引入 @import "../assets/common/common.css";//自定义.css的样式路径 js文件的引入 在ma ...

  4. 微信内 H5 页面自定义分享

    起源: 最近公司在做一个活动的h5页面,在微信内打开时需要进行微信授权,然后后端会重定向到这个页面并且携带了一些参数(openid等).问题是点击微信的原生分享时,会把携带的这些参数一起分享出去,等于 ...

  5. vue项目引入CNZZ数据专家(方法汇总篇)

    vue项目引入CNZZ数据专家(方法汇总篇) 很多网站都有cnzz数据统计,用于分析网站页面受访情况. 今天就来备注一下开发经验: vue如何集成cnzz数据专家进行受访记录? 友盟+CNZZ官方文档 ...

  6. 微信JS-SDK调用微信接口方法说明

    微信公众平台 微信JS-SDK说明文档 地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 概述 微信JS ...

  7. 微信小程序之——自定义分享按钮(完整版)

    声明 onShareAppMessage 函数 onShareAppMessage() { return {          title: '弹出分享时显示的分享标题'        desc: ' ...

  8. vue项目引入typescript(vue与ts混用)

    说明 为什么要在vue项目中使用ts? 新公司给了一个关于vue项目的需求,又由于ts是JavaScript的超集,强类型数据,组件化友好.故我选择在vue项目中引入ts. 下载typescript和 ...

  9. html页面调用微信扫一扫功能,微信JSSDK调用微信扫一扫功能的方法

    如何利用微信jssdk调用微信扫一扫功能?具体内容如下 1. 确保有 调起微信扫一扫接口 权限,测试号可能不行: 2. 导入相关js 3. 页面触发扫码元素 4. 相关js代码 var _appid ...

最新文章

  1. Linux查看WAS的jvm信息,linux 下使用命令查看jvm信息
  2. NSOperation vs大中央派遣
  3. Webpack 源码学习系列(一)
  4. linux系统虚拟化测试,网络性能与磁盘测试 - Linux虚拟化性能PK:Ubuntu系统6大版本_Linux新闻_Linux公社-Linux系统门户网站...
  5. 特性,物料特性,批次特性(转自SAPNow)
  6. .net面试题(一)
  7. 不混淆so文件_NDK开发_编译的cpp引用到 其它so, Android.mk 的写法
  8. c语言数组用户注册登入管理系统_学生成绩管理系统案例
  9. ThinkPHP验证码和分页
  10. 宾馆客房管理系统Mysql数据库课程设计
  11. mmo服务器 性能测试,【Zinx应用-MMO游戏案例-(5)构建项目及用户上线】Golang轻量级并发服务器框架...
  12. 互联网厂商抢着布局的“无币区块链”到底是什么?
  13. linux解压gz.gz文件,linux解压tar.gz并重命名_linux解压tar.gz文件
  14. 动态IP分配协议:DHCP
  15. nexus 7 2代 linux6,大饱眼福: Nexus 7二代全拆解
  16. 跳跃表 mysql_跳跃表原理与实践
  17. curve25519 - 数学的魅力
  18. 上海Java开发工程师最新面试题(2020年)
  19. python培训广西
  20. 跟着团子学SAP PS—项目计划参数文件的配置 OPSB

热门文章

  1. html flash闹钟,教你用Flash制作可以定时闹钟
  2. Android usb学习笔记:Android AOA协议Android端 流程总结
  3. java opencv 去噪,opencv教程-图像去噪与修复
  4. Audio Codec介绍-6(音频设备的3种硬件接口--PCM,IIS和AC97)
  5. php的bs_PHP能否做BS架构的开发?
  6. Django 配置数据库相关
  7. “熵”详细学习笔记——什么是熵?有什么性质?联合熵等其他熵的作用
  8. python实时显示图片_任何显示来自Cam的实时图像的快速Python GUI
  9. 金融IT系统高可用运维经验总结—人员、技术、流程
  10. Mysql常见的几种安装失败的问题: