【Vue功能】weixin-js-sdk实现vue分享功能

本文介绍如何使用weixin-js-sdk实现Vue项目的微信好友及朋友圈分享功能,包括配置微信SDK、设置分享信息等步骤,并解决分享链接含中文时的问题。

weixin-js-sdk实现vue分享功能

h5链接分享到微信好友、朋友圈的链接卡片内容可以自定义
安装微信sdk

cnpm install weixin-js-sdk -S

使用
新建文件:plugins/wechat.js

import wx from 'weixin-js-sdk'
import axios from 'axios'
let config = {
	debug: false, // 查看初始化结果,成功与否
	appId: "", //公众号的APPID
	nonceStr: "", // 生成签名的随机字符串
	timestamp: 0, // 生成签名的时间戳
	signature: "", // :微信生成的签名
	jsApiList: ["updateAppMessageShareData",'choosehXPay ','miniprogram.navigateTo',"invokeMiniprogramAPI"] // 必填,需要使用的JS接口列表,需要在项目当中使用的那些方法,比如说支付chooseWXPay,直接把方法写进jsApiList里面既可
}
export default {
	init() {
		axios({
			method: "POST",
			// url:注意,每次url变化之后都需要重新微信jssdk授权,虽然每次授权url除去#后都是一样的,但是必须这么做,微信的机制
			url: process.env.VUE_APP_GUIGUI_API_HOST + "/api/wechat/getHmcSDKConfig",
		}).then(res => {
			let configData = res.data.data
			if (configData) {
				config.appId = configData.appId
				config.nonceStr = configData.nonceStr
				config.timestamp = configData.timestamp
				config.signature = configData.signature
			}
			wx.config(config)
		})
	},
	setWechatShareInfo(link, title, desc, imgUrl, callBack) {
		wx.ready(function () { //需在用户可能点击分享按钮前就先调用
			wx.updateAppMessageShareData({
				title: title || '', // 分享标题
				desc: desc || '', // 分享描述
				link: link || '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
				imgUrl: imgUrl || '', // 分享图标
				success: function () {
					callBack()
				}
			})
		})
	}

}

页面使用
注意:使用微信自定义分享功能的时候,当分享链接中存在中文的时候,要进行encodeURIComponent(),
原因:在安卓手机上能成功自定义分享,ios手机上则不能成功分享,安卓手机会自动encodeURIComponent,而IOS不会。

			handleShareWechat() {
				import('@/plugins/wechat.js').then(mod => {
					let wx = mod.default
					wx.init()
					wx.setWechatShareInfo(location.href, '分享标题', '分享描述')
				})
			},
### 实现 Vue3 项目中微信 JS-SDK 地理位置功能 #### 导入并配置 weixin-js-sdkVue3 项目中集成 `weixin-js-sdk` 来获取用户的地理位置,首先需要安装依赖包: ```bash yarn add weixin-js-sdk ``` 接着,在所需的页面组件内导入 SDK 并初始化[^1]。 #### 初始化 JSSDK 配置 为了使微信内置浏览器支持 JavaScript 接口权限验证,需先向微信公众平台申请接口签名。服务器端应提供相应的接口来生成签名字符串,并将其传递给前端应用。假设已经获得了必要的参数(如 appId, timestamp, nonceStr 和 signature),可以在创建 Vue 组件实例之前完成配置工作: ```javascript import { onMounted } from 'vue' import wx from 'weixin-js-sdk' export default { setup() { const initWeChatConfig = async () => { try { let response = await fetch('/wechat/config') // 请求后端获取签名数据 let configData = await response.json() wx.config({ debug: false, appId: configData.appId, timestamp: configData.timestamp, nonceStr: configData.nonceStr, signature: configData.signature, jsApiList: ['getLocation'] }) wx.ready(function(){ console.log('JSSDK ready'); }); wx.error(function(res){ console.warn(`JSSDK error:${res.errMsg}`); }); } catch (error) { console.error(error); } } onMounted(() => { initWeChatConfig() }) return {} } } ``` 这段代码展示了如何利用 Composition API 的方式定义了一个名为 `initWeChatConfig()` 函数用于发起请求以获得配置信息,并调用 `wx.config()` 方法传入这些信息来进行初始化操作[^2]。 #### 使用 getLocation 获取地理坐标 一旦成功完成了上述准备工作,则可以安全地调用 `getLocation` 接口来取得当前位置的信息了。下面是一个简单的例子说明怎样处理返回的数据: ```javascript const getCurrentPosition = () => { wx.getLocation({ type: 'wgs84', // 默认为 wgs84 返回 gps 坐标;gcj02 返回国测局加密坐标 success(res) { const latitude = res.latitude; const longitude = res.longitude; console.info(`纬度:${latitude}, 经度:${longitude}`) // 可在此处继续执行其他逻辑... }, cancel() { alert('用户拒绝授权获取地理位置') } }) } // 调用函数 getCurrentPosition(); ``` 此部分实现了当用户同意分享其所在地点之后,程序能够接收到精确到经纬度的具体数值,并打印出来供后续开发人员进一步加工使用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值