uni-app以h5网页的方式发布企业微信应用

以h5网页的方式发布企业微信应用

提示:发布企业微信的方式有h5网页和小程序两种方式,这里为什么采取h5的方式呢,按理来说,调试和工具查看,小程序调试起来相对会更加方便点,之前 有好多个微信小程序上线经验,经验来说,审核起来还是比较麻烦的,还是h5网页更方便点,但是呢,页面交互,小程序更好点,h5网页加载给我的感觉比较慢,企业微信加载等待期还是比较慢的,各有利弊吧,我这里是避免审核麻烦,以h5网页发布。



前言

公司项目是以uni-app写的产品,目前适配了APP,微信小程序、钉钉小程序,h5网站,这两天公司突然说要适配企业微信,这里将过程中走过的坑位记录一下,也希望给后来者一点提示,绕过我走的坑位,

一、准备工作

示例:因为我的应用是一个5端的应用,所以每个端都有相应的条件编译,所有在发布到一端之前,一定要确保在该端没有问题,UI和api等都得测试,确实不同端有你意想不到的惊喜,好了,废话不多说,咱们开始。

二、使用步骤

1.确保你的应用在h5模式下无报错,UI等除企业微信特定sdk外的业务代码无问题

2.注册企业微信开发者账号(一般都是公司申请https://work.weixin.qq.com/)应用管理->创建应用

3. 集成企业微信相关sdk.js ,按照dcloud的文档说明

在项目的根目录下新建一个html文件

我这里是index.html
下面 html内容可以完全复制。

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <title>
            <%= htmlWebpackPlugin.options.title %>
        </title>
        <script>
            document.addEventListener('DOMContentLoaded', function() {
                document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
            })
        </script>
        <link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
		<!-- 企业微信h5授权 -->
		<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
		<!-- 用于调试所用 -->
		<script type="text/javascript" src="https://cdn.bootcss.com/vConsole/3.3.0/vconsole.min.js"></script>
    </head>
    <body>
        <noscript>
            <strong>Please enable JavaScript to continue.</strong>
        </noscript>
        <div id="app"></div>
        <!-- built files will be auto injected -->
    </body>
</html>

因为企业微信的相关的js不是模块化的,而uni-app框架vue页面屏蔽了一些dom操作,那么我是以静态链接方式引入js,那我们处理的话是以模块化处理,添加一个js工具文件去做一下授权处理,然后以备后面页面中授权时用到

//由于企业微信jssdk不是模块化js文件,所以采用自定义index.html模板,并用<script>标签引入
// // #ifdef H5
//  var vConsole = new VConsole();
//  console.log('VConsole is cool');
// // #endif
const initJssdk = function() {
	return new Promise((reslove, reject) => {
		uni.request({
			url: '请求你们公司的服务端接口',//因为腾讯企业微信说,授权相关配置存放在服务端
			method: 'POST',
			data: {
				url: window.location.href.split('#')[0]
			},
			success: (res) => {
				console.log(JSON.stringify(res));
				if (res.statusCode == 200) {
					let info = res.data;
					if (uni.getSystemInfoSync().platform == "ios") {
						setTimeout(() => {
							initJs(info,reslove)
						}, 500);
					} else {
						initJs(info,reslove)
					}
				} else {
					reslove(false)
				}
			},
			fail: (f) => {
				uni.showToast({
					title: JSON.stringify(f),
					icon: 'none'
				})
			}
		})

	})
	function initJs(info,reslove) {
	//这里有一个坑点,需注意,我倒腾了好一会儿才发现,当你去查看企业微信sdk.j时,也就是上面的
	//[jweixin-1.2.0.js](https://res.wx.qq.com/open/js/jweixin-1.2.0.js),中暴露两个操作口wx和jWeixin
	//但是呢,我刚开始注册的时候是wx.config,说是config这个方法undefined,那好嘛,不存在,我换还不成 么。换成jWeixin.config,然后好了(我这时候是android设备调试,没有问题了),然后准备上线的时候,发现ios企业微信不好使,,然后调试完,发现(jWeixin.config报undefined,我就大胆的尝试了一下,我改回去wx.config,,然后ios企业微信端好了,其他端undefined了,那怎么办,那就判断一下么,这个不好用那个,哪个好用哪个
		let soianWX;
		if(wx.config==undefined){
			soianWX=jWeixin;
		}else{
			soianWX=wx;
		}
		soianWX.config({
			beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
			debug: false, // 开启调试模式
			appId: info.appId, // 必填,企业微信的corpID
			timestamp: info.timestamp, // 必填,生成签名的时间戳
			nonceStr: info.nonceStr, // 必填,生成签名的随机串
			signature: info.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
			jsApiList: ['chooseImage', 'scanQRCode', 'previewImage', 'getLocation','previewFile'] || info
				.jsApiList // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
		});
		soianWX.ready((res) => {
			console.log('config初始化成功' + res);
			reslove(true)
		})
		soianWX.error(function(res) {
			console.log('config初始化失败', res);
			reslove(false)
		});
	}
}

module.exports = {
	initJssdk
}

这个js工具封装好之后,在你需要的时候,调用授权配置即可。

前端代码方面基本完成,然后就是在企业微信应用管理配置启动页,网页授权及JS-SDK,
配置应用主页
应用主页配置

网页授权及JS-SDK
在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
uni-app 中实现 H5 静默微信授权,你可以按照以下步骤进行操作: 1. 首先,确保你已经在微信公众平台上注册了你的应用,并获取到了 AppID。 2. 在 uni-app 项目中的 `main.js` 文件中引入微信 JS-SDK: ```javascript import wx from 'weixin-js-sdk' Vue.prototype.$wx = wx ``` 3. 创建一个 `wechat.js` 文件,用于封装微信 JS-SDK 的相关操作,例如: ```javascript import wx from 'weixin-js-sdk' export function initWechatConfig() { // 向后端请求获取微信配置信息 // ... // 初始化微信 JS-SDK wx.config({ debug: false, appId: '', // 你的 AppID timestamp: '', // 后端返回的时间戳 nonceStr: '', // 后端返回的随机字符串 signature: '', // 后端返回的签名 jsApiList: ['checkJsApi', 'login', 'getUserInfo'] // 需要使用的微信 API }) } export function login() { return new Promise((resolve, reject) => { wx.ready(() => { wx.login({ success: res => { if (res.code) { // 将 code 发送到后端服务器进行处理,获取用户信息 // ... resolve(res.code) } else { reject(new Error('微信登录失败')) } }, fail: err => { reject(err) } }) }) }) } export function getUserInfo() { return new Promise((resolve, reject) => { wx.ready(() => { wx.getUserInfo({ success: res => { // 获取到用户信息,进行处理 // ... resolve(res.userInfo) }, fail: err => { reject(err) } }) }) }) } ``` 4. 在需要授权的页面中,调用 `initWechatConfig()` 方法初始化微信 JS-SDK 配置,在需要获取用户信息的地方调用 `login()` 方法进行登录,并在登录成功后再调用 `getUserInfo()` 方法获取用户信息。 5. 根据获取到的用户信息进行业务逻辑处理。 通过以上步骤,你可以在 uni-app H5 中实现静默微信授权。请注意,具体的实现细节可能会因为你的业务逻辑和后端实现而有所不同。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值