vue 开发企业微信整合案例分析


Posted in Javascript onDecember 02, 2019

本文实例讲述了vue 开发企业微信整合。分享给大家供大家参考,具体如下:

概述

手机端程序可以和企业微信进行整合,我们也可以使用企业微信JSSDK功能,实现一些原生的功能。

整合步骤

在整合之前需要阅读 整合步骤。

http://work.weixin.qq.com/api/doc#10029

1.引入JSSDK

npm i -S weixin-js-sdk 这样就引入了微信sdk。

2.通过config接口注入权限验证配置

export function initWxConfig(vm){
  var url=_baseUrl + "/initConfig.do";
  var curUrl=location.href.split("#")[0];
  var params="url="+curUrl;
  vm.$ajax.post(url,params).then(res=>{
    var data=res.data;
    wx.config({ 
     beta: true,
     debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
     appId: data.appId, // 必填,公众号的唯一标识 
     timestamp: data.timestamp, // 必填,生成签名的时间戳 
     nonceStr: data.nonceStr, // 必填,生成签名的随机串 
     signature: data.signature, // 必填,签名,见附录1 
     jsApiList: [
       'chooseImage',
       'previewImage',
       'uploadImage',
       'downloadImage',
       'previewFile',
       'getLocation',
     ] 
    });
    wx.error(function (res) {
      console.log("调用微信jsapi返回的状态:"+res.errMsg);
    });
  }).catch(function(error) {
    //vm.errorToast(error,1000);
    console.info(error);
  })
}

服务端

initConfig.do 对应的代码。

这个微信需要绑定到一个应用中,我们需要定义应用的可信域名。

vue 开发企业微信整合案例分析

在企业微信登陆后,我们会记录一个应用的ID。

在服务端调用方法:

public static Map<String, String> getWxConfig(String url,String corpId,String secret) throws Exception { 
    TokenModel tokenModel = TokenUtil.getEntTicket(corpId, secret); 
    String timestamp = Long.toString(System.currentTimeMillis() / 1000); // 必填,生成签名的时间戳 
    String nonceStr = UUID.randomUUID().toString(); // 必填,生成签名的随机串 
    String ticket=tokenModel.getToken();
    String signature = ""; 
    // 注意这里参数名必须全部小写,且必须有序 
    String sign = "jsapi_ticket=" + ticket + "&noncestr=" + nonceStr+ "×tamp=" + timestamp + "&url=" + url; 
    try { 
      MessageDigest crypt = MessageDigest.getInstance("SHA-1"); 
      crypt.reset(); 
      crypt.update(sign.getBytes("UTF-8")); 
      signature = byteToHex(crypt.digest()); 
    } catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
    } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
    }
    Map<String, String> ret = new HashMap<String, String>();
    ret.put("appId", corpId); 
    ret.put("timestamp", timestamp); 
    ret.put("nonceStr", nonceStr); 
    ret.put("signature", signature); 
    return ret; 
}

3.这个配置代码在应用启动时执行。

import {initWxConfig} from '@/assets/app.js';

vue 开发企业微信整合案例分析

4.使用相应的API

wxImage(type){
      var self_=this;
      wx.chooseImage({
        sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: [type], // 可以指定来源是相册还是相机,默认二者都有
        success: function (res) {
          var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
            for(var i=0;i<localIds.length;i++){
            wx.uploadImage({
              localId: localIds[i], // 需要上传的图片的本地ID,由chooseImage接口获得
              isShowProgressTips: 1, // 默认为1,显示进度提示
              success: function (res) {
                var serverId = res.serverId; // 返回图片的服务器端ID
                var url=_baseUrl +"/wx/saveFile.do";
                var params="mediaId=" + serverId;
                self_.$ajax.post(url,params).then(res=>{
                  var data=res.data;
                  self_.handFile(data);
                });
              }
            });
          }
        }
      });
    }

选择相册或者拍照。

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 学习技巧
Feb 17 Javascript
Javascript 网页水印(非图片水印)实现代码
Mar 01 Javascript
jquery弹出层类代码分享
Dec 27 Javascript
JavaScript的arguments对象应用示例
Sep 15 Javascript
js onmousewheel事件多次触发问题解决方法
Oct 17 Javascript
浅析jQuery Ajax通用js封装
Jun 22 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
Dec 05 Javascript
Angular 常用指令实例总结整理
Dec 13 Javascript
详解vue的数据binding绑定原理
Apr 12 Javascript
JavaScript简单拖拽效果(1)
May 17 Javascript
vue props 一次传多个值实例
Jul 22 Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 #Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 #Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 #Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 01 #Javascript
angular异步验证防抖踩坑实录
Dec 01 #Javascript
如何利用node.js开发一个生成逐帧动画的小工具
Dec 01 #Javascript
Node.js中console.log()输出彩色字体的方法示例
Dec 01 #Javascript
You might like
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
php Mysql日期和时间函数集合
2007/11/16 PHP
PHP基础陷阱题(变量赋值)
2012/09/12 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
js处理表格对table进行修饰
2014/05/26 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
Python数据类型之Number数字操作实例详解
2019/05/08 Python
python selenium循环登陆网站的实现
2019/11/04 Python
Python 如何批量更新已安装的库
2020/05/26 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
python实现KNN近邻算法
2020/12/30 Python
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
恶意软件的定义
2014/11/12 面试题
what is the difference between ext2 and ext3
2015/08/25 面试题
单位在职证明范本
2014/01/09 职场文书
优秀员工表扬信
2014/01/17 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
彻底理解golang中什么是nil
2021/04/29 Golang