钉钉开发文档

用户身份验证

更新时间: 2018-7-30

通过本小节的阅读,您可以了解到,通过前后端代码的配合,获取正在访问您应用的当前用户身份的流程。

免登:钉钉用户在进入您开发的应用时,无需用户输入用户名密码,应用即可获取用户身份的流程。

使用 前端 dd.getAuthCode 获取免登授权码(authCode),获取到 authCode 后,调用服务端接口
getuserinfo接口,拿到用户userId(此接口只用于免登服务中用来换取userId)。

获取免登授权码

前端JSAPI接口说明

dd.getAuthCode

返回值

名称 类型 描述
authCode string 免登授权码(authCode) ,5分钟有效,且只能使用一次

使用说明

该接口为前端JSAPI,直接在应用页面的onLoad方法里面调用即可。

客户端 Android iOS PC
支持说明 4.3.5及以上支持 4.3.5及以上支持 不支持

获取 authCode 示例

dd.getAuthCode({
    success:(res)=>{
        dd.alert({content: res.authCode})
    },
    fail: (err)=>{
        dd.alert({content: JSON.stringify(err)})
    }
})

服务端通过免登码获取userid

应用在拿到AuthCode后,调用服务端getuserinfo接口,拿到authCode对应的用户userId(此接口只用于免登服务中用来换取userId)。三方应用前端与服务端通信,可以参考前端JSAPI dd.httpRequest

请求方式:GET(HTTPS)
请求地址https://oapi.dingtalk.com/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
参数说明

参数 参数类型 必须 说明
access_token String 调用接口凭证
code String getAuthCode接口中获取的authCode

SDK请求示例(JAVA)

DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getuserinfo");
OapiUserGetuserinfoRequest request = new OapiUserGetuserinfoRequest();
request.setCode("BzmP5AL3tYoZ8f3aKJP");
request.setHttpMethod("GET");
OapiUserGetuserinfoResponse response = client.execute(request,accessToken);

返回结果

{
    "errcode": 0,
    "errmsg": "ok",
    "userid": "USERID",
    "deviceId":"DEVICEID",
    "is_sys": true,
    "sys_level": 0|1|2
}

服务端通过userid获取用户信息

调用获取用户详情服务端接口来获取用户信息。建议用户信息保存在前端缓存中(dd.setStorage)或者globalData中,避免多次调用钉钉接口。

获取当前企业的corpId

使用说明

ISV应用和企业自建应用可以通过该API获取当前企业的corpId。

dd.corpId