一、 获取微应用免登授权码
调用runtime.permission.requestAuthCode获取微应用免登授权码。
在线调试链接
dd.runtime.permission.requestAuthCode({
corpId: "corpid", // 企业应用id
onSuccess: function(result) {
/*{
code: 'hYLK98jkf0m' //string authCode
}*/
},
onFail : function(err) {}
})
二、获取微应用accessToken
// 获取accessToken,注意正式代码要有异常流处理
DingTalkClient accessTokenClient = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest accessTokenRequest = new OapiGettokenRequest();
accessTokenRequest.setAppkey(appkey);
accessTokenRequest.setAppsecret(appsecret);
accessTokenRequest.setHttpMethod("GET");
OapiGettokenResponse response;
try {
response = accessTokenClient.execute(accessTokenRequest);
} catch (ApiException e) {
throw new PlatFormException("调用钉钉获取accessToken接口失败");
}
String accessToken = JSONObject.parseObject(response.getBody()).get("access_token").toString();
三、获取userId
String accessToken = JSONObject.parseObject(response.getBody()).get("access_token").toString();
// 获取用户信息
DingTalkClient requestUserClient = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getuserinfo");
OapiUserGetuserinfoRequest requestUser = new OapiUserGetuserinfoRequest();
requestUser.setCode(requestAuthCode);
requestUser.setHttpMethod("GET");
OapiUserGetuserinfoResponse responseUser;
try {
responseUser = requestUserClient.execute(requestUser, accessToken);
} catch (ApiException e) {
throw new PlatFormException("调用钉钉接口获取userId失败");
}
// 查询得到当前用户的userId
String userId = responseUser.getUserid();
四、获取mobile
String userId = responseUser.getUserid();
OapiV2UserGetResponse responseMobile;
try {
DingTalkClient mobileClient = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
OapiV2UserGetRequest req = new OapiV2UserGetRequest();
req.setUserid(userId);
req.setLanguage("zh_CN");
responseMobile = mobileClient.execute(req, accessToken);
logger.info("钉钉responseMobile: {}", responseMobile.getBody());
} catch (ApiException e) {
e.printStackTrace();
throw new PlatFormException("调用钉钉接口获取用户信息失败");
}
String mobile = responseMobile.getResult().getMobile();