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 相关文章推荐
Jquery 返回json数据在IE浏览器中提示下载的问题
May 18 Javascript
Javascript中的五种数据类型详解
Dec 26 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
May 12 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
Jul 06 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
Aug 03 Javascript
微信小程序 教程之模板
Oct 18 Javascript
Bootstrap超大屏幕的实现代码
Mar 22 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
JS实现查找数组中对象的属性值是否存在示例
May 24 Javascript
原生js实现抽奖小游戏
Jun 27 Javascript
vue实现抖音时间转盘
Sep 08 Javascript
vue请求数据的三种方式
Mar 04 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
Syphon 使用方法
2021/03/03 冲泡冲煮
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
2013/02/14 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
python生成随机验证码(中文验证码)示例
2014/04/03 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
python文件排序的方法总结
2020/09/13 Python
Python爬虫教程知识点总结
2020/10/19 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
StringBuilder和String的区别
2015/05/18 面试题
小学生中国梦演讲稿
2014/04/23 职场文书
党员志愿者活动总结
2014/06/26 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
新闻人物通讯稿
2014/10/09 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
数学教师个人总结
2015/02/06 职场文书