钉钉实现免登第三方平台
先在钉钉开放平台,创建应用。
应用信息内有AgentId,AppKey,AppSecret
开发管理内配置服务器出口IP,应用首页地址等。
说明 第三方企业应用可以在微应用的首页URL中使用$CORPID$做为参数占位符,钉钉容器会将$CORPID$替换为当前访问用户的企业corpId。
例如,微应用首页地址为https://www.dingtalk.com,需要获取当前访问用户的企业corpId值,微应用首页地址可改为https://www.dingtalk.com?corpId=$CORPID$。在进入该首页地址页面时,使用js方法获取当前页面URL,即可获取corpId值。
获取免登授权码
dd.ready(function() { dd.runtime.permission.requestAuthCode({ corpId: "ding12345xxx", // 企业id onSuccess: function (info) { code = info.code // 通过该免登授权码可以获取用户身份 }}); });
调用钉钉接口,用免登授权码换取access_token
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken"); OapiGettokenRequest request = new OapiGettokenRequest(); request.setAppkey("appkey"); request.setAppsecret("appsecret"); request.setHttpMethod("GET"); OapiGettokenResponse response = client.execute(request); System.out.println(response.getBody());
调用钉钉接口,用access_token换取用户信息
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getuserinfo"); OapiV2UserGetuserinfoRequest req = new OapiV2UserGetuserinfoRequest(); req.setCode("bab02f63c1e030fbbxxxx"); OapiV2UserGetuserinfoResponse rsp = client.execute(req, access_token); System.out.println(rsp.getBody());
最后查询本系统用户。