c#+Vue获取钉钉免登码后微应用添加水印

这几天公司需要使用钉钉发送消息给个人后加上该登录人员的水印,不闲聊直接开始。

首先需要登录钉钉开发者后台获取到你创建的微应用的参数,应用appKey和应用appsecret来获取token,必须使用token和免登code后才能获取到该用户信息,这里我没有权限看公司钉钉的后台没办法截图,可以参考钉钉给的文档:钉钉免登流程

前端获取code免登码,该免登码5分钟内有效,只能使用一次,获取到后通过vue的axios传给后端,这里的waterMark.Set()方法是打水印。

首先安装钉钉的jsapi

import * as dd from "dingtalk-jsapi";

 

Vue背景打水印方法
let watermark = {} let setWatermark = (str) => { let id = '1.23452384164.123412415' if (document.getElementById(id) !== null) { document.body.removeChild(document.getElementById(id)) } let can = document.createElement('canvas') can.width = 150 can.height = 120 let cans = can.getContext('2d') cans.rotate(-20 * Math.PI / 180) cans.font = '20px Vedana' cans.fillStyle = 'rgba(200, 200, 200, 0.60)' cans.textAlign = 'left' cans.textBaseline = 'Middle' cans.fillText(str, can.width / 3, can.height / 2) let div = document.createElement('div') div.id = id div.style.pointerEvents = 'none' div.style.top = '70px' div.style.left = '0px' div.style.position = 'fixed' div.style.zIndex = '100000' div.style.width = document.documentElement.clientWidth - 100 + 'px' div.style.height = document.documentElement.clientHeight - 100 + 'px' div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat' document.body.appendChild(div) return id } // 该方法只允许调用一次 watermark.set = (str) => { let id = setWatermark(str) setInterval(() => { if (document.getElementById(id) === null) { id = setWatermark(str) } }, 500) window.onresize = () => { setWatermark(str) } } export default watermark;

后端获取code免登码后获取当相关人员的名称传给前端打水印。

 

 

从头到尾其实就是这么简单,但是钉钉开发有个最坑爹的地方,你必须使用钉钉RC版来调试该功能,才能知道是否获取成功。调试工具下载地址:https://developers.dingtalk.com/document/resourcedownload/h5-debug

 

,

 

 这里微应用的打开页面需要在钉钉控制后台填写首页地址,如果你已经部署到服务器上,请将你的项目打包并部署该站点地址,之后就完成了根据免登获取姓名后将水印打上了。

 

posted @ 2021-06-24 11:30  InXin  阅读(480)  评论(0)    收藏  举报