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 相关文章推荐
html 锁定页面(js遮罩层弹出div效果)
Oct 27 Javascript
jquery显示和隐藏div特效实例
Feb 27 Javascript
JavaScript异步编程Promise模式的6个特性
Apr 03 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
Aug 11 Javascript
谈谈JavaScript异步函数发展历程
Sep 29 Javascript
javascript省市区三级联动下拉框菜单实例演示
Nov 29 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
May 18 Javascript
javascript实现一个网页加载进度loading
Jan 04 Javascript
Vue和Bootstrap的整合思路详解
Jun 30 Javascript
微信小程序checkbox组件使用详解
Jan 31 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
Jul 05 Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 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
简单采集了yahoo的一些数据
2007/02/14 PHP
destoon官方标签大全
2014/06/20 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
Python画图学习入门教程
2016/07/01 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
python实现简易学生信息管理系统
2020/04/05 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
IE9下html5初试小刀
2010/09/21 HTML / CSS
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
初中生学习生活的自我评价
2013/11/20 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
幼儿园秋游感想
2014/03/12 职场文书
新教师岗前培训方案
2014/06/05 职场文书
水电工程师岗位职责
2015/02/13 职场文书
MySQL数据库完全卸载的方法
2022/03/03 MySQL
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers