關於釘釘的免登以及用戶組獲取工具的使用


工具源碼 : https://github.com/svmachine/DingDing.git

jar包下載 : https://github.com/svmachine/DingDing/blob/master/DingDingUtil.jar

 

部署使用說明

1.初始化

需要自定義listener,在contextInitialized方法中初始化釘釘api執行的必要條件環境

@Override
public void contextInitialized(ServletContextEvent sce) {
    DefaultContext.init(String random, String corpSecret, String corpId, String agentId);
}

 

2.jsp頁面的放置,使用ifream的方式加載需要單點的系統頁面,一般jsp頁面(示例中為index.jsp、indexPC.jsp)放置在tomcat/webapps/ROOT目錄下,因釘釘免登區分pc端以及移動端故需要兩個jsp頁面,在任意頁面中加入如下代碼區分跳轉pc端或手機端

<script>
        var ua = navigator.userAgent;
        var US = {
            Android:function () {   //安卓
                return ua.match(/Android/i)?true:false;
            },
            BlackBerry:function() {  //黑莓
                return ua.match(/BlackBerry/i)?true:false;
            },
            IOS:function(){  //IOS
                return ua.match(/iPhone|iPad|iPod/i)?true:false;
            },
            
            Windows:function() {
                return ua.match(/IEMobile/i)?true:false;
            },
            isMobile:function() {  //移動設備
                return US.Android()||US.BlackBerry()||US.IOS()||US.Windows();
            }
        }
        if(US.isMobile()==false){
            window.location = "/indexPC.jsp";     //如果是電腦訪問 ,則跳入指定網址。實例中為indexPC.jsp
        }
    </script>

 

3.編寫獲取登錄用戶id的js, 此處為pc端,手機端將DingTalkPC替換為dd即可

pc端js:https://g.alicdn.com/dingding/dingtalk-pc-api/2.7.0/index.js      http://g.alicdn.com/ilw/cdnjs/zepto/1.1.6/zepto.min.js

手機端js: http://g.alicdn.com/dingding/open-develop/1.6.9/dingtalk.js      http://g.alicdn.com/ilw/cdnjs/zepto/1.1.6/zepto.min.js

DingTalkPC.ready(function() {
    DingTalkPC.runtime.permission.requestAuthCode({
        corpId : _config.corpId,
        onSuccess : function(info) {
            $.ajax({
                url : 'userInfo?code=' + info.code + '&corpid='
                + _config.corpId,  //前端鑒權后獲取的code,以及前期返回的conf配置信息,此處url對應示例中的UserInfoServlet類
                type : 'GET',
                success : function(data, status, xhr) {
                    var info = JSON.parse(data);   //獲取的用戶詳細信息
                    var height = window.innerHeight;
                    <!--廢棄的方法, 該方法樣式不太好調試,且通過ifream加載-->
                    <!--var html = "<iframe src=\"url?username=" + info.name + "\" id=\"mainFrame\" height=\"" + height + "\" width=\"100%\"></iframe>";-->
                    <!--$("#ifream").append(html)-->

                    <!-- 目前使用的方式, 該方法存在會跳轉兩次的問題,看起來不太明顯, 此方法會直接展示嵌入的頁面,不通過ifream加載-->
                    location.href = "url?username=" + info.name;
                },
               error : function(xhr, errorType, error) {
                    alert(errorType + ', ' + error);
                }
            });

        },
        onFail : function(err) {
            alert('fail: ' + JSON.stringify(err));
        }
    });
});            

 

 

4.獲取url中的username參數,在第三方系統中實現免登陸即可。

 

5.獲取釘釘部門,用戶信息

調用DingDingUserAndGroup類中的方法即可。

getDepartments(String departmentId); //獲取指定部門id下的子部門信息

getDepartments(); //獲取所有部門信息

getUserByDepartment(String departmentId); //獲取指定部門id下的用戶信息

getUsers(); //獲取所有的用戶信息

getDepartmentParentId(String departmentId); //獲取指定部門id的完整路徑id

getDepartmentById(String departmentId); //獲取指定部門id的部門詳細信息

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM