热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

钉钉单点登录方案

目录钉钉单点登录获取企业内部应用的access_token基本信息请求参数返回参数根据sns临时授权码获取用户信息基本信息Query参数Body参数返回参数用户信息根据unioni

目录
  • 钉钉单点登录
    • 获取企业内部应用的access_token
      • 基本信息
      • 请求参数
      • 返回参数
    • 根据sns临时授权码获取用户信息
      • 基本信息
      • Query参数
      • Body参数
      • 返回参数
      • 用户信息
    • 根据unionid获取用户userid
      • 基本信息
      • Query参数
      • Body参数
      • 返回参数
      • 结果结构
    • 根据userid获取用户详情
      • 基本信息
      • Query参数
      • Body参数
      • 返回参数
      • 结果结构
  • 开发者后台设置
    • 插件应用授权
  • 创建钉钉应用


企业内部应用实现。


钉钉单点登录


获取企业内部应用的access_token

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



  1. 登录钉钉开发者后台。

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

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

参数:


基本信息

请求方式:GET

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


请求参数




























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

返回参数





































名称类型示例值描述
access_tokenStringfw8ef8we8f76e6f7s8dxxxx生成的access_token。
expires_inNumber7200access_token的过期时间,单位秒。
errmsgStringok返回码描述。
errcodeNumber0返回码。

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


基本信息

请求方式:POST

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


Query参数



































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

Body参数





















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

返回参数































名称类型示例值描述
user_infoUserInfo用户信息。
errmsgStringok返回描述。
errcodeNumber0返回码。

用户信息

"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_tokenStringbe3Fxxxx调用服务端API的应用凭证

Body参数





















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

返回参数





































名称类型示例值描述
request_idStringzcqi5450rpit请求ID。
errcodeNumber0返回码。
errmsgStringok返回码描述。
resultUserGetByUnionIdResponse返回结果。

结果结构

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

根据userid获取用户详情


基本信息

请求方式:POST

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


Query参数





















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

Body参数




























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

返回参数





































名称类型示例值描述
request_idString4e7exhl6pm0t请求ID。
errcodeNumber0返回码。
errmsgStringok返回码描述。
resultUserGetResponse返回结果。

结果结构

"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}

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



推荐阅读
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • Python应用实例大揭秘:七大令人惊叹的高阶技巧展示
    2020年,Python无疑成为了最炙手可热的编程语言,其影响力已远远超出程序员的范畴。从初学者到资深从业者,甚至小学生,都在纷纷加入Python的学习热潮中。凭借其低门槛、易上手和强大的功能,Python正逐渐成为各行业不可或缺的工具。本文将揭示七个令人惊叹的Python高级应用技巧,帮助读者进一步提升编程水平。 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
author-avatar
ThanksGiven
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有