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 相关文章推荐
JS 字符串连接[性能比较]
May 10 Javascript
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
js实现在文本框光标处添加字符的方法介绍
Nov 24 Javascript
JQuery的$命名冲突详细解析
Dec 28 Javascript
Javascript实现计算个人所得税
May 10 Javascript
js识别uc浏览器的代码
Nov 06 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
Oct 10 Javascript
解析ajaxFileUpload 异步上传文件简单使用
Dec 30 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
通过学习bootstrop导航条学会修改bootstrop颜色基调
Jun 11 Javascript
JQuery 又谈ajax局部刷新
Nov 27 jQuery
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 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
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
php中socket通信机制实例详解
2015/01/03 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
php生成与读取excel文件
2016/10/14 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
Angular 向组件传递模板的两种方法
2018/02/23 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
python使用rpc框架gRPC的方法
2018/08/24 Python
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
金融学专科生自我鉴定
2014/02/21 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
详解Redis复制原理
2021/06/04 Redis
MySQL 服务和数据库管理
2021/11/11 MySQL
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
Windows7下FTP搭建图文教程
2022/08/05 Servers