作者:ThanksGiven | 来源:互联网 | 2023-09-13 16:00
目录钉钉单点登录获取企业内部应用的access_token基本信息请求参数返回参数根据sns临时授权码获取用户信息基本信息Query参数Body参数返回参数用户信息根据unioni
目录
- 钉钉单点登录
- 获取企业内部应用的access_token
- 根据sns临时授权码获取用户信息
- 基本信息
- Query参数
- Body参数
- 返回参数
- 用户信息
- 根据unionid获取用户userid
- 基本信息
- Query参数
- Body参数
- 返回参数
- 结果结构
- 根据userid获取用户详情
- 基本信息
- Query参数
- Body参数
- 返回参数
- 结果结构
- 开发者后台设置
- 创建钉钉应用
企业内部应用实现。
钉钉单点登录
获取企业内部应用的access_token
在获取access_token前,需要在开发者后台查看应用的AppKey和AppSecret:
- 登录钉钉开发者后台。
- 在应用开发页面,单击目标应用进入应用详情页面。
- 在基础信息页面,复制应用的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}
填写保存之后,在版本管理与发布页面,选择发布范围,保存即可。