新娘的英文译语怎么说-浙江中考时间
2023年4月19日发(作者:阴极射线)钉钉⼩程序h5微应⽤企业内部应⽤开发
概述
钉钉在企业应⽤已经是⼀件很普遍的事情了,我这讲讲钉钉应⽤⼩程序中的h5微应⽤的开发。本⽂借鉴了lnexin的⽂章。主要从两个demo
来阐述,第⼀个是通过依照钉钉官⽹的描述,html+java实现;第⼆个是使⽤vue+java实现。
实现逻辑
开发钉钉企业应⽤,针对企业内部应⽤。钉钉应⽤有⼀个⾮常好的特性:当我们配置的⾸页地址是局域⽹地址,⼿机连接在局域⽹,钉钉是
能够访问应⽤的。
1.获得相应企业管理员权限
2.登陆钉钉开发后坚强不屈的近义词 台,根据钉钉图⽂创建应⽤,创建成功后,可以获取到appkey和appSecret,同时在后台⾸页还可以获取到corpId
- 3.在创建应⽤的时候需要填⼊⾸页地址,这个⾸页地址填⼊我们的页⾯地址,这个页⾯中必须包含钉钉的回调函数,⽤于获取code.
h5微应⽤-html+java demo
1.⾸页
页⾯如下,加⼊了钉钉的回调函数,主要⽤于获取钉钉传过来的code,然后传递给后台。
H5
微应⽤免登demo当前页⾯的url:
解析url,获取的corpID:
SDK
初始化获取的code:请求我们服务端,登录返回的结果:
$(function () {
//钉钉sdk 初始化
// 参数为回调函数,在环境准备就绪时触发,jsapi的调⽤需要保证在该回调函数触发后调⽤,否则⽆效。
(function () {
//获取当前⽹页的url
///?corpid=ding46a9582af5b7541b35c2f4657eb6378f
var currentUrl = ng()
$(\"#url\").append(currentUrl)
// 解析url中包含的corpId
var corpId = \'??\';
// var corpId = (\"corpid=\")[1];
$(\"#corpId\").append(corpId)
//使⽤SDK 获取免登授权码
tAuthCode({
corpId: corpId,
onSuccess: function (result) {
var code = ;
$(\"#code\").append(code)
//请求我们服务端的登陆地址
$.get(\"10.4.94.250:9000/ding/login?code=\" + code + \"&corpId=\" + corpId, function (response) {
/琵琶起舞换新声 / 我们服务器返回的信息
// 下⾯代码主要是将返回结果显⽰出来,可以根据⾃⼰的数据结构随便写
for (item in response) {
二三四五六七八六九打一成语 $(\"#result\").append(\"
}
if () {
for (item in ) {
$(\"#result\").append(\"
}
}
});
}
});
});
})
2.后台
后台使⽤springboot框架,后台关键代码如下:
package ;
import deEnum;
import operties;
import cessTokenDTO;
import thService;
import 4j;
import red;
import aders;
import ype;
import seEntity;
import e;
import mplate;
import p;
import ;
@Slf4j
@Service
public class DingAuthServiceImpl implements DingAuthService {
@Autowired
private RestTemplate restTemplate;
@Autowired
private DingProperties dingProperties;
public DingAccessTokenDTO accessToken(){
long starTime = me();
DingAccessTokenDTO dingAccessToken = null;
String url = gAccessToken();
HttpHeaders headers = new HttpHeaders();
tentType(ATION_JSON);
Map map = new HashMap();
(\"appkey\", Key());
(\"appsecret\", Secret());
ResponseEntity
if(tusCode().is2xxSuccessful()){
if(y()!=null && y().getErrcode().equals(e())){
dingAccessToken = y();
}
}
if(dingAccessToken == null){
(\"[1.1.1]获取钉钉token失败,地址:{},参数:{}\",url,map);
}
(\"[1.1.2]获取钉钉token结束,耗时:{}ms\",(me()-starTime)/1000);
return dingAccessToken;
}
}
package ;
import deEnum;
import operties;
import erDTO;
import erIdDTO;
import erService;
import 4j;
import red;
import aders;
import ype;
import seEntity;
import e;
import mplate;
import p;
import ;
@Service
@Slf4j
public class DingUserServiceImpl implements DingUserService {
@Autowired
private RestTemplate restTemplate;
@Autowired
private DingProperties dingProperties;
public DingUserIdDT繁华落尽 O getUserId(String access_token, String code){
long starTime = me();
DingUserIdDTO res = null;
String url = gGetUserId();
HttpHeaders headers = new HttpHeaders();
tentType(ATION_JSON);
Map map = new HashMap();
(\"access_token\", access_token);
(\"code\", code);
ResponseEntity
if(tusCode().is2xxSuccessful()){
if(y()!=null && y().getErrcode().equals(e())){
res = y();
}
}
if(res == null){
(\"[2.1.1]获取钉钉userid失败,地址:{},参数:{}\",url,map);
}
(\"[2.1.2]获取钉钉userid结束,耗时:{}ms\",(me()-starTime)/1000);
return res;
}
public DingUserDTO getUserInfo(String access_token, String userid){
long starTime = me();
DingUserDTO res = null;
String url = gGetUser();
HttpHeaders headers = new HttpHeaders();
tentType(ATION_JSON);
Map map = new HashMap();
(\"access_token\", access_token);
(\"userid\", userid);
ResponseEntity
if(tusCode().is2xxSuccessful()){
if(y()!=null && y().getErrcode().equals(e())){
res = y();
}
}
if(res == nu杀身成仁 ll){
(\"[2.2.1]获取钉钉user失败,地址:{},参数:{}\",url,map);
}
(\"[2.2.2]获取钉钉user结束,耗时:{}ms\",(me()-starTime)/1000);
return res;
}
}
package ller;
import cessTokenDTO;
import erDTO;
import erIdDTO;
import thService;
import erService;
import 4j;
import red;
import ping;
import tMapping;
import tParam;
import ntroller;
import HashMap;
import ;
@Slf4j
@RestController
@RequestMapping(value = \"/ding\")
public class UserController {
@Autowired
private DingAuthService dingAuthService;
@Autowired
private DingUserService dingUserService;
/**
* 根据前台初始化后获取的免登授权码获取⽤户信息
*
* @param code 免登授权码
* @param corpId 企业应⽤corpId
* @return
*/
@GetMapping(\"/login\")
public Map
@RequestParam(\"corpId\") String corpId) {
DingAccessTokenDTO accessTokenDTO = Token();
DingUserIdDTO userIdDTO = rId(ess_token(), code);
DingUserDTO userInfo = rInfo(ess_token(), rid());
Map
(\"code\", code);
(\"token\", ess_token());
(\"user\", userInfo);
成语100个 (\"corpId\", corpId);
(\"[钉钉] ⽤户免登, 根据免登授权码code, corpId获取⽤户信息, code: {}, corpId:{}, result:{}\", code, corpId, result);
return result;
}
}
完整地址:
vue+java demo
可以直接引⽤jsapi或者通过npm安装jsapi,本例⼦中遵循vue最佳时间,使⽤npm install dingtalk-jsapi --save 安装依赖库。
2.创建,主要是⽤获取钉钉回调过来的code,存⼊session中或者直接传递给后台。
import * as dd from \'dingtalk-jsapi\';
(function () {
var corpId = \'??\';
//使⽤SDK 获取免登授权码
tAuthCode({
corpId: corpId,
onSuccess: function (result) {
var code = ;
m(\'code\',code)
alert(code);
}
});
});
export default {
dd
}
3. 中增加引⼊代码
import Vue from \'vue\'
import App from \'./\'
import router from \'./router\'
import store from \'./store\'
import ElementUI from \'element-ui\';
import \'element-ui/lib/theme-chalk/\';
import dd from \'@/components/util/\'
(ElementUI);
tionTip = false
= dd
new Vue({
router,
store,
render: h => h(App)
}).$mount(\'#app\')
4.后台使⽤第⼀个例⼦中的后台,vue完成demo地址:
双缩脲的英文翻译英语怎么说-全是车的泡面番
更多推荐
Dingding是什么意思gding在线翻译读音例
发布评论