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 学习之一 对象访问
Nov 23 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
Nov 20 Javascript
jquery获取css的color值返回RGB的方法
Dec 18 Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 Javascript
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
基于vue实现一个禅道主页拖拽效果
May 27 Javascript
微信小程序 wx:for遍历循环使用实例解析
Sep 09 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
微信小程序监听用户登录事件的实现方法
Nov 11 Javascript
google广告之另类js调用实现代码
Aug 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
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
浅谈js原生拖放
2016/11/21 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
python调用百度语音REST API
2018/08/30 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
关于VPN
2012/06/10 面试题
一道输出判断型Java面试题
2014/10/01 面试题
中英文自我评价常用句型
2013/12/19 职场文书
文明教师事迹材料
2014/01/16 职场文书
向领导表决心的话
2014/03/11 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript