其他分享
首页 > 其他分享> > 钉钉单点登录方案

钉钉单点登录方案

作者:互联网

目录
企业内部应用实现。

钉钉单点登录

获取企业内部应用的access_token

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

  1. 登录钉钉开发者后台
  2. 应用开发页面,单击目标应用进入应用详情页面。
  3. 基础信息页面,复制应用的AppKey和AppSecret。

参数:

基本信息

请求方式:GET

请求地址https://oapi.dingtalk.com/gettoken

请求参数

名称 类型 是否必填 示例值 描述
appkey String dingeqqpkv3xxxx 应用的唯一标识key。
appsecret String GT-lsu-taDAsTsxxxx 应用的密钥。AppKey和AppSecret可在钉钉开发者后台的应用详情页面获取。

返回参数

名称 类型 示例值 描述
access_token String fw8ef8we8f76e6f7s8dxxxx 生成的access_token。
expires_in Number 7200 access_token的过期时间,单位秒。
errmsg String ok 返回码描述。
errcode Number 0 返回码。

根据sns临时授权码获取用户信息

基本信息

请求方式:POST

请求地址https://oapi.dingtalk.com/sns/getuserinfo_bycode

Query参数

名称 类型 是否必填 示例值 描述
accessKey String 3a2ca6aa3231b7xxxx 应用的AppKey
timestamp String 1546084445901 当前时间戳,单位毫秒。
signature String ddsdssfsdfxxxx 通过appSecret计算出来的签名值,签名算法为HmacSHA256,签名数据是当前时间戳timestamp,密钥是appId对应的appSecret,使用密钥对timestamp计算签名值。

Body参数

名称 类型 是否必填 示例值 描述
tmp_auth_code String 4a2c5695b78738d495f47bxxxxxx 用户授权的临时授权码

返回参数

名称 类型 示例值 描述
user_info UserInfo 用户信息。
errmsg String ok 返回描述。
errcode Number 0 返回码。

用户信息

"user_info":{
                "nick":"名字",
                "unionid":"dingdkjjojoixxxx",
                "openid":"dingsdsqwlklklxxxx",
                "main_org_auth_high_level":true
}

根据unionid获取用户userid

基本信息

请求方式:POST

请求地址https://oapi.dingtalk.com/topapi/user/getbyunionid

Query参数

名称 类型 是否必填 示例值 描述
access_token String be3Fxxxx 调用服务端API的应用凭证

Body参数

名称 类型 是否必填 示例值 描述
unionid String z21HjQliSzpw0Yxxxx 员工在当前开发者企业账号范围内的唯一标识,系统生成,不会改变。

返回参数

名称 类型 示例值 描述
request_id String zcqi5450rpit 请求ID。
errcode Number 0 返回码。
errmsg String ok 返回码描述。
result UserGetByUnionIdResponse 返回结果。

结果结构

"result":{
   "contact_type":"0",
   "userid":"zhangsan"
}

根据userid获取用户详情

基本信息

请求方式:POST

请求地址https://oapi.dingtalk.com/topapi/v2/user/get

Query参数

名称 类型 是否必填 示例值 描述
access_token String be3Fxxxx 调用服务端API的应用凭证

Body参数

名称 类型 是否必填 示例值 描述
userid String manager4220 用户的userid。
language String zh_CN 通讯录语言。zh_CN:中文(默认值)en_US:英文

返回参数

名称 类型 示例值 描述
request_id String 4e7exhl6pm0t 请求ID。
errcode Number 0 返回码。
errmsg String ok 返回码描述。
result UserGetResponse 返回结果。

结果结构

 "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": 1,
                "order": 176318669012199520
            },
            {
                "dept_id": 379661095,
                "order": 176318556766960500
            }
        ],
        "real_authed": true,
        "dept_id_list": [
            1,
            379661095
        ],
        "job_number": "10001",
        "email": "1@example.com",
        "leader_in_dept": [
            {
                "dept_id": 379661095,
                "leader": false
            },
            {
                "dept_id": 1,
                "leader": false
            }
        ],
        "manager_userid": "user01",
        "mobile": "188xxxx1234",
        "active": true,
        "telephone": "010-8xxxx6-2345",
        "avatar": "",
        "hide_mobile": false,
        "senior": false,
        "name": "杨xxx",
        "state_code": "86"
}

注意:单点的依据是unionid的,只需要获取到unionid即可,同理依据为userid的只需要获取到userid。

开发者后台设置

插件应用授权

应用开发 ---> 工作台 ---> 登录 ---> 创建扫码登录应用授权

完成之后,可以在列表看到相应的appid与appsecret。

创建钉钉应用

应用开发 ---> 创建应用(创建之后) ---> 点击应用 ---> 开发管理

服务器出口,填写需要调用钉钉接口的服务器ip,首页地址填写https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=${授权应用appid}&response_type=code&scope=snsapi_auth&state=STATE&redirect_uri=${服务sso url}

填写保存之后,在版本管理与发布页面,选择发布范围,保存即可。

标签:返回,方案,单点,String,登录,示例,userid,参数,应用
来源: https://www.cnblogs.com/52why/p/16248901.html