uni-app 公众号测试号 jssdk使用配置 本地服务器

本文详细介绍了uni-app项目中如何配置并使用微信JS-SDK,包括设置JS接口安全域名、获取配置数据、封装配置函数以及在实际场景中的调用示例。同时,提到了在微信开发者工具中的测试情况,并展示了h5页面配置解决跨域的manifest.json代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、uni-app 项目跑起来

在这里插入图片描述
注意:测试号公众号的JS接口安全域名不能填 localhost,看步骤二配置

2、登录测试号公众号

记住JS接口安全域名人家叫你写的是域名就一定不要带协议(http/https)

否则报错:
errMsg: "config:fail,Error: 系统错误,错误码:40048,invalid url domain

在这里插入图片描述

3、js sdk 使用代码

这里使用的是依赖包 npm 下载

import jweixin from 'jweixin-module'
import http from '@/common/vmeitime-http/interface.js'

// 调用后台接口,获取js sdk 所需配置数据
// 传参:url 当前页面地址
// 返回数据 appId,nonceStr, timestamp, signature,
function getWeiXinJsConfig(url) {
	return http.request({
		url: 'https://---------/wxJssdk/getJssdk',
		method: 'GET',
		data: { url: url }
	})
}


// 封装
export function configWeiXin(url,callback) {
	getWeiXinJsConfig(url).then(result => {
		let apiList = [ // 可能需要用到的能力 需要啥就写啥。多写也没有坏处
			'onMenuShareAppMessage',
			'onMenuShareTimeline',
			'hideOptionMenu',
			'showOptionMenu',
			'chooseWXPay',
			'checkJsApi',
			'openLocation',
			'getLocation'
		];
		let info = {
			debug: false, // 调试,发布的时候改为false
			appId: result.data.appId,
			nonceStr: result.data.nonceStr,
			timestamp: result.data.timestamp,
			signature: result.data.signature,
			jsApiList: apiList
		};
		jweixin.config(info);
		jweixin.error(err => {
			console.log('config fail:', err);
		});
		
		jweixin.ready(res => {
			if (callback) callback(jweixin);
		});
	}).catch(err => {
		console.log('--err--', err)
	})
}



// 调用
<script>
	import {configWeiXin} from '@/common/utils/js-sdk.js'
	export default {
		data() {
			return {}
		},
		onLoad() {},
		methods: {
			getList() {
				const url = encodeURIComponent(location.href.split('#')[0])
				configWeiXin(url,jweixin => {
					console.log(jweixin);
					jweixin.chooseImage({
					  count: 1, // 默认9
					  sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
					  sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
					  success: function (res) {
						  console.log(res)
					      let localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
					  }
					});
				});
			}
		}
	}
</script>

在微信开发者工具测试效果
在这里插入图片描述

4、扩展-配置manifest.json

h5 页面配置 解决跨域

附上代码块:

"h5" : {
        "title" : "Test",
        "devServer": {
			"port": 8080,
			"disableHostCheck": true,
			"proxy": {
				"/": {
					"target": "",	
					"changeOrigin": true,	
					"secure": false,
					"pathRewrite": {
						"^/": "/"
					}
			    }
			}	
		},
		"router" : {
			"mode" : "history"
		 }
    }

未完待续~

### 实现 uni-app 中 H5 页面通过 JSSDK 扫码功能 #### 准备工作 为了使微信 JSSDK 正常运行,在 `index.html` 文件中需引入 jweixin 库并处理命名冲突: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <script> window.jWeixin = window.wx; delete window.wx; </script> ``` 此操作确保了全局对象 wx 不会与其他库发生冲突[^2]。 #### 配置服务器端签名算法 服务端需要提供接口来获取 jsapi_ticket 并计算 signature 参数。具体实现依赖于后端技术栈,但核心逻辑保持一致:基于当前 URL 和 ticket 计算 SHA1 值作为签名。 #### 客户端初始化配置Vue 组件生命周期钩子 created 或 mounted 方法里调用微信 JS-SDK 的 config 接口完成环境准备: ```javascript export default { data() { return {}; }, methods: { initWxConfig(configData) { // 初始化微信JS-SDK配置 jWeixin.config({ debug: false, // 开启调试模式, appId: configData.appId, // 必填,企业号的唯一标识 timestamp: configData.timestamp, // 必填,生成签名的时间戳 nonceStr: configData.nonceStr, // 必填,生成签名的随机串 signature: configData.signature,// 必填,签名 jsApiList: ['scanQRCode'] // 必填,需要使用JS接口列表 }); jWeixin.ready(function(){ console.log('wx ready'); }); jWeixin.error(function(res){ alert(JSON.stringify(res)); }); } }, onLoad(option) { const url = encodeURIComponent(location.href.split('#')[0]); // 调用后端API获取config数据 this.$http.get(`/wechat/config?url=${url}`).then((response)=>{ let result=response.data; if(result.code===0){ this.initWxConfig(result.data); }else{ console.error("Failed to get wechat config"); } }).catch(err=>{ console.error(`Error occurred while fetching WeChat config ${err}`); }) } } ``` 上述代码片段展示了如何向服务器请求必要的参数,并利用这些参数对 JSSDK 进行初始化设置[^1]。 #### 发起扫描动作 当用户触发特定事件时(比如点击按钮),可以执行如下 JavaScript 来启动二维码扫描过程: ```javascript methods:{ scanQrCode:function(){ jWeixin.scanQRCode({ needResult: 1, // 默认为0,扫描结果由微信处理;1则直接返回扫描结果给前端应用 desc : 'scanQRCode desc', // 可选,默认为空字符串 success: function (res) { var result = res.resultStr; // 当needResult 为 1 时有效 console.log("Scan Result:",result); }, fail:function(error){ console.warn("Scan failed",error); } }); } } ``` 这段脚本定义了一个名为 `scanQrCode()` 的方法用于激活摄像头进行 QR Code 扫描,并接收回调函数中的识别结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值