专有钉钉开发

您所在的位置:网站首页 钉钉jsapi获取userid 专有钉钉开发

专有钉钉开发

2024-07-03 02:14| 来源: 网络整理| 查看: 265

专有钉钉开发-获取登录用户信息(Java)

最近工作中有个浙政钉开发的项目,进行开发时需要在专有钉钉上进行调试,感觉示例代码比较基础,这里进行下简单的二次封装。

专有钉钉服务器端API地址

[统一登录中心](https://openplatform-portal.dg-work.cn/backendManage/#/docs?apiType=serverapi&docKey=2674834)

专有钉钉前端API地址

[统一登录中心](https://openplatform-portal.dg-work.cn/backendManage/#/docs?apiType=jsapi&docKey=2675418)

Controller层 @Api("浙政钉用户信息") @RestController @RequestMapping("/zzd/client") public class ClientController extends BaseController { @Autowired private IClientService clientService; private static Logger logger = LoggerFactory.getLogger(ClientController.class); // 获取用户临时授权码authCode @ApiOperation(value = "获取用户临时授权码authCode", notes = "获取用户临时授权码authCode", httpMethod = "GET") @GetMapping("/getClientAuthCode/{authCode}") public AjaxResult getClientAuthCode( @ApiParam(name = "authCode", value = "需要获取的用户临时授权码", required = true) @PathVariable String authCode) { if (StringUtils.isEmpty(authCode) || "undefined".equals(authCode)) { return AjaxResult.error(HnPipelineConstants.MSG_ERROR_PARAMETER_WRONG); } logger.info("用户临时授权码authCode=" + authCode); AjaxResult code = clientService.getClientAuthCode(authCode); return code; } } IService接口 public interface IClientService { // 获取当前登录用户信息 public AjaxResult getClientAuthCode(String authCode); // 获取通讯录权限范围 public AjaxResult getscopesV2(Long tenantId); } Service.Impl实现类 @Service public class ClientServiceImpl implements IClientService { /*** 注入Mapper文件 ***/ /*** 日志文件 ***/ private static Logger logger = LoggerFactory.getLogger(ClientServiceImpl.class); private static ExecutableClient executableClient; /*** 静态代码块加载,只加载一次 ***/ static { try { // 读取resource目录下的config配置文件 Properties properties = new Properties(); InputStream in = ClientServiceImpl.class.getClassLoader().getResourceAsStream("config/appRequest.properties"); properties.load(in); executableClient = ExecutableClient.getInstance(); //DomainName不同环境对应不同域名,示例为sass域名 executableClient.setDomainName(properties.get("zzd.domainName").toString()); executableClient.setProtocal(properties.get("zzd.protocal").toString()); //应用App Key executableClient.setAccessKey(properties.get("zzd.appKey").toString()); //应用App Secret executableClient.setSecretKey(properties.get("zzd.appSecret").toString()); // 设置请求超时时间 5秒 executableClient.setTimeout(5000); executableClient.init(); } catch (IOException e) { e.printStackTrace(); logger.info("无法加载到浙政钉开发配置文件!"); } } /** * 中文名:根据authCode换取用户信息 * 接口名:/rpc/oauth2/dingtalk_app_user.json * 所在目录:企业内应用免登 * 调用方式:POST(HTTPS) * * @param authCode * @return AjaxResult */ @Override public AjaxResult getClientAuthCode(String authCode) { //executableClient保证单例 IntelligentPostClient intelligentPostClient = executableClient.newIntelligentPostClient("/rpc/oauth2/dingtalk_app_user.json"); OapiRpcOauth2DingtalkAppUserJsonRequest oapiRpcOauth2DingtalkAppUserJsonRequest = new OapiRpcOauth2DingtalkAppUserJsonRequest(); //登录access_token if (StringUtils.isEmpty(getAccessToken2())) { AjaxResult.error(HnPipelineConstants.MSG_ERROR_REQUEST_WAIT); } oapiRpcOauth2DingtalkAppUserJsonRequest.setAccess_token(getAccessToken2()); //临时授权码 oapiRpcOauth2DingtalkAppUserJsonRequest.setAuth_code(authCode); //获取结果 OapiRpcOauth2DingtalkAppUserJsonResponse apiResult = intelligentPostClient.post(oapiRpcOauth2DingtalkAppUserJsonRequest); /*** 用户信息处理 ***/ JSONObject accessTokenJsonObject = JSONObject.parseObject(apiResult.getContent()); JSONObject content = accessTokenJsonObject.getJSONObject("content"); if (content.getBoolean("success")) { JSONObject dataObj = accessTokenJsonObject.getJSONObject("content").getJSONObject("data"); /*** 拿到用户信息,判断用户是否存在,存在则返回用户信息,反之插入数据库 ***/ return AjaxResult.success(clientInfo); } return AjaxResult.error("登陆失败,请联系系统管理员!"); } /** * 中文名:获取通讯录权限范围 * 接口名:/auth/scopesV2 * 所在目录:获取通讯录用户信息 * 调用方式:GET(HTTPS) * * @return */ @Override public AjaxResult getscopesV2(Long tenantId) { //executableClient保证单例 IntelligentGetClient intelligentGetClient = executableClient.newIntelligentGetClient("/auth/scopesV2"); OapiAuthScopesV2Request oapiAuthScopesV2Request = new OapiAuthScopesV2Request(); //租户ID oapiAuthScopesV2Request.setTenantId(tenantId); //获取结果 OapiAuthScopesV2Response apiResult = intelligentGetClient.get(oapiAuthScopesV2Request); JSONObject resultJsonObject = JSONObject.parseObject(apiResult.getContent()); if (resultJsonObject.containsKey("deptVisibleScopes")) { JSONArray jsonArray = resultJsonObject.getJSONArray("deptVisibleScopes"); // 获取企业授权的部门编码列表 List deptList = JSONObject.parseArray(jsonArray.toJSONString(), String.class); //executableClient保证单例 IntelligentGetClient intelligentGetClient2 = executableClient.newIntelligentGetClient("/mozi/organization/getOrganizationPath"); OapiMoziOrganizationGetOrganizationPathRequest oapiMoziOrganizationGetOrganizationPathRequest = new OapiMoziOrganizationGetOrganizationPathRequest(); //组织code oapiMoziOrganizationGetOrganizationPathRequest.setOrganizationCode(deptList.get(0)); //租户ID oapiMoziOrganizationGetOrganizationPathRequest.setTenantId(tenantId); //获取结果 OapiMoziOrganizationGetOrganizationPathResponse apiResult2 = intelligentGetClient2.get(oapiMoziOrganizationGetOrganizationPathRequest); return AjaxResult.success(apiResult2.getContent()); } return AjaxResult.error(HnPipelineConstants.MSG_ERROR_NO_DEPT_VISIBLE_SCOPES); } /** * 获取刷新参数AccessToken * * @return accessToken */ public String getAccessToken2() { String accessToken = ""; //executableClient保证单例 GetClient getClient = executableClient.newGetClient("/gettoken.json"); //获取结果 String accessTokenData = getClient.get(); JSONObject accessTokenJsonObject = JSONObject.parseObject(accessTokenData); JSONObject content = accessTokenJsonObject.getJSONObject("content"); if (content.getBoolean("success")) { accessToken = accessTokenJsonObject.getJSONObject("content").getJSONObject("data").getString("accessToken"); } return accessToken; } } config配置文件

专有钉钉开发配置文件放在resource目录下的config文件夹下面,我这里命名为appRequest.properties。

zzd.domainName=openplatform.dg-work.cn zzd.protocal=https zzd.appKey=XXXXXXXXXXXXXXXXXXXXXXXXXX zzd.appSecret=XXXXXXXXXXXXXXXXXXXXXXXXXXXX


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3