Odoo实现企业内部微应用钉钉免登

技术方:粟雪峰


实现企业内部使用钉钉时无需输入账号和密码。

开发流程


一、 免登授权码


用户信息保存在前端缓存中(dd.setStorage)或者cookie可以达到更好的效果,避免调用钉钉接口。

获取免登授权码。

方式一:小程序

调用dd.getAuthCode接口,通过JSAPI获取授权码。

dd.getAuthCode({

    success:function(res){

        /*{

            authCode: 'hYLK98jkf0m' //string authCode

        }*/

    },

    fail:function(err){

    }

});


方式二:微应用

访问https://open-dev.dingtalk.com/apiExplorer#/jsapi?api=runtime.permission.requestAuthCode在线调试该接口,调用runtime.permission.requestAuthCode获取微应用免登授权码,适用于window、ios、pc客户端。

dd.runtime.permission.requestAuthCode({

    corpId: "corpid",//企业的corpid,由前端从URL中获取

    onSuccess: function(result) {

    /*{

        code: 'hYLK98jkf0m' //string authCode  授权码

    }*/

    },

    onFail : function(err) {}

 

})


二、获取access__token


调用access_token来鉴权调用者身份进行授权。

在获取access_token前,需要在开发者后台查看应用的AppKey和AppSecret:

登录https://open-dev.dingtalk.com/。

在应用开发页面,单击目标应用进入应用详情页面。

在基础信息页面,复制应用的AppKey和AppSecret。

 

三、获取用户userid


开发者需要使用本接口通过access_token和免登接口中获取的code来获取用户userid。在调用接口前,确保对应用已经添加了接口权限(开发者在后台申请)。

实例:

 

四、获取用户详情


服务端API是以应用维度授权的,确保对应用已经添加权限。

 

返回示例


企业内部应用:

{

    "errcode": 0,

    "errmsg": "ok",

    "result": {

        "extension": "{\"爱好\":\"旅游\",\"年龄\":\"24\"}",

        "unionid": "xBnhjgjmofhhsLxxx",

        "boss": false,

        "unionEmpExt": {

            "corpId": "ding1c417cfd9e3142d1acaaa37764f9xxxx",

            "userid": "45694432-1019596262",

            "unionEmpMapList": [

                {

                    "corpId": "ding1c417cfd9e3142d1acaaa37764f9xxxx",

                    "userid": "45694432-1019596262"

                }

            ]

        },

        "role_list": [

            {

                "group_name": "默认",

                "id": 1507113578,

                "name": "主管理员"

            }

        ],

        "admin": true,

        "remark": "杨XX",

        "title": "",

        "hired_date": 1598457600000,

        "userid": "manager4220",

        "work_place": "",

        "dept_order_list": [

            {

                "dept_id": 100,

                "order": 176318669012199520

            },

            {

                "dept_id": 200,

                "order": 176318556766960500

            }

        ],

        "real_authed": true,

        "dept_id_list": [

            200,

            100

        ],

        "job_number": "10001",

        "email": "1@example.com",

        "leader_in_dept": [

            {

                "dept_id": 200,

                "leader": false

            },

            {

                "dept_id": 1,

                "leader": false

            }

        ],

        "dept_position_list": [

            {

                "dept_id": 200,

                "title": "销售",

                "is_main": false,

                "work_place": "北京"

            },

            {

                "dept_id": 100,

                "title": "经理",

                "is_main": true,

                "work_place": "上海"

            }

        ],

        "manager_userid": "user01",

        "mobile": "188xxxx1234",

        "active": true,

        "telephone": "010-8xxxx6-2345",

        "avatar": "",

        "hide_mobile": false,

        "senior": false,

        "name": "杨xxx",

        "state_code": "86"

    },

    "request_id": "51jql88tpa6g"

}


第三方企业应用:

{

    "errcode": 0,

    "errmsg": "ok",

    "result": {

        "active": true,

        "admin": true,

        "avatar": "https:\/\/static-legacy.dingtalk.com\/media\/lALPD0.png",

        "boss": false,

        "dept_id_list": [

            616299

        ],

        "dept_order_list": [

            {

                "dept_id": 616299,

                "order": 1762998572

            }

        ],

        "exclusive_account": false,

        "hide_mobile": false,

        "job_number": "",

        "leader_in_dept": [

            {

                "dept_id": 616299,

                "leader": false

            }

        ],

        "manager_userid": "manager456",

        "name": "杨XX",

        "real_authed": true,

        "role_list": [

            {

                "group_name": "默认",

                "id": 1585,

                "name": "子管理员"

            }

        ],

        "senior": false,

        "title": "",

        "union_emp_ext": {},

        "unionid": "Wzh9KbyaCXXXXXX",

        "userid": "user456"

    },

    "request_id": "ulwe0li6ytkx"

}



标签
Odoo 通用图形验证码模块配置说明