钉钉统一授权登录第三方网站

开发流程

  1. 配置回调域名

    1. 进入已创建的应用详情页,在基础信息页面可以查看到应用的SuiteKey/SuiteSecret(第三方企业应用)或AppKey/AppSecret(企业内部应用)

      img

    2. 在应用详情页,然后单击钉钉登录与分享,添加应用回调的URL,以http或https开头。

      img

  2. 权限管理,点击个人权限,申请个人手机号信息权限通讯录个人信息读权限。

    img

  3. 构造登录页面。

    说明 登录页面在初次校验登录状态时显示。

    https://login.dingtalk.com/oauth2/auth?	
    redirect_uri=https%3A%2F%2Fwww.aaaaa.com%2Fa%2Fb	
    &response_type=code	
    &client_id=dingxxxxxxx  //应用的AppKey 	
    &scope=openid  //此处的openId保持不变	
    &state=dddd
    &prompt=consent
    
    参数是否必填说明
    redirect_uri授权通过/拒绝后回调地址。注意需要与开发者后台钉钉登录与分享的地址保持一致。
    response_type固定值为code。授权通过后返回authCode。
    client_id步骤一中创建的应用详情中获取。企业内部应用:client_id为应用的AppKey。第三方企业应用:client_id为应用的SuiteKey。
    scope授权范围,授权页面显示的授权信息以应用注册时配置的为准。当前只支持两种输入:openid:授权后可获得用户useridopenid corpid:授权后可获得用户id和登录过程中用户选择的组织id,空格分隔。注意url编码。
    state跟随authCode原样返回。
    prompt值为consent时,会进入授权确认页。
    org_type控制输出特定类型的组织列表,org_type=management 表示只输出有管理权限的组织。注意scope包含corpid时该参数存在意义。
    corpId用于指定用户需要选择的组织。注意scope包含corpid时该参数存在意义。传入的corpId需要是当前用户所在的组织。
    exclusiveLogintrue表示专属帐号登录,展示组织代码输入页。
    exclusiveCorpId开启了专属帐号功能的组织corpId。注意exclusiveLogin为true时该参数存在意义,表示直接进入该组织的登录页。

    img

    img

  4. 登录后,打开授权页面。

    说明 首次授权时,显示授权页面

  5. 单击同意,触发以下流程。

(1)点击同意后,钉钉在url返回authCode。如下图所示。

img

(2)根据authCode,调用服务端获取用户token接口,获取用户个人token。

(3)根据用户个人token,调用获取用户通讯录个人信息接口,实现获取用户个人信息。

{
	 "nick": "zhangsan",
	 "avatarUrl": "https://xxx",
	 "mobile": "150xxxx9144",
	 "openId": "123",
	 "unionId": "z21HjQliSzpw0Yxxxx",
	 "stateCode": "86"
	}

参考 统一授权登录第三方网站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/694140.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库管理-第199期 近期获得的国产数据库荣誉(20240609)

数据库管理199期 2024-06-09 数据库管理-第199期 近期获得的国产数据库荣誉(20240609)1 HaloDB2 PolarDB3 TiDB4 青学会总结 数据库管理-第199期 近期获得的国产数据库荣誉(20240609) 作者:胖头鱼的鱼缸(尹…

[Linux]内网穿透nps

文章目录 基础文件下载项目地址下载地址 客户端安装解压文件客户端启动客户端注册到linux系统服务客户端注册到windows系统服务windows bat 一键管理员注册windows bat 一键管理员取消 基础文件下载 项目地址 https://github.com/ehang-io/nps 下载地址 Releases ehang-io…

clickHouse实现表自增ID的代码及相关逻辑

一、介绍 clickHourse表自增ID主要时两种方式: insert数据时,手动维护一个全局ID给表设置uuid字段,使用 generateUUIDv4()函数赋予默认值。 这里的话推荐手动维护一个全局的自增ID,不推荐使用UUID的方式,主要原因有…

国内docker镜像站全军覆没 如何自己部署一个Docker镜像加速服务器?

近日,在使用SJTUG提供的镜像加速拉取镜像的时候死活拉不下来,不管是 docker hub 还是国内的某些镜像站,同样都无法使用,虽然现在还有部分可用的镜像站,但也说不准某一天因为某些原因同样停止提供了,这时候就…

【QT5.14.2】编译MQTT库example的时候报No such file or directory

【QT5.14.2】编译MQTT库example的时候报No such file or directory 前几天导师让跑一下MQTT库,用的5.14.2版本的QT,于是就上网搜了一个教程:https://www.bilibili.com/video/BV1dH4y1e7hG/?spm_id_from333.337.search-card.all.click&v…

【PLG洞察】| 飞书成功之路:关键在分销裂变

引言 随着企业服务市场的发展,Product-Led Growth(PLG,产品驱动增长)模式逐渐成为众多SaaS企业的首选战略。在这个背景下,字节跳动旗下的企业协作与管理平台——飞书,凭借其独特的分销裂变策略&#xff0c…

2024年6月9日 (周日) 叶子游戏新闻

万能嗅探: 实测 网页打开 某视频号、某音、某红薯、某站,可以做到无水印的视频和封面下载功能哦,具体玩法大家自行发挥吧。 《Funko Fusion》发布新预告 20款影视作品齐聚一堂第三人称动作游戏新作《Funko Fusion》今日发布最新实机演示。该游戏融合了整…

java —— 线程(一)

一、进程与线程 一个进程可以包含一个以上的线程,CPU 时间片切换的基本单位是线程。 二、创建线程 (一)继承 Thread 类 public class Task extends Thread{Override //重写run方法public void run(){System.out.pr…

eNSP学习——RIP路由协议的汇总

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、配置RIPv1协议 3、配置RIPv2自动汇总 4、配置RIPv2手动汇总 需要eNSP各种配置命令的点击链接自取:华为eNSP各种设备配置命令大全PDF版_ensp配置命令大全…

Redis系列-5 Redis分布式锁

背景: 本文介绍Redis分布式锁的内容,包括Redis相关命令和Lua脚本的介绍,以及操作分布式锁的流程与消息,最后结合Redission源码介绍分布式锁的实现原理。 1.基本命令 1.1 基本键值对的设置 设值: set key value 取值: get key …

数据分析必备:一步步教你如何用Pandas做数据分析(21)

1、Pandas 可视化 Pandas 可视化是指使用 Pandas 库中的函数和方法来创建数据可视化图表。Pandas 提供了一些基本的绘图功能,例如折线图、柱状图、饼图等,可以通过调用相应的函数来创建这些图表。 2、基本绘图:绘图 Series和DataFrame上的…

【启明智显分享】基于工业级芯片Model3A的7寸彩色触摸屏应用于智慧电子桌牌方案

一场大型会议的布置,往往少不了制作安放参会人物的桌牌。制作、打印、裁剪,若有临时参与人员变更,会务方免不了手忙脚乱更新桌牌。由此,智能电子桌牌应运而生,工作人员通过系统操作更新桌牌信息,解决了传统…

2024.6.9 四

Python的异常处理 在python里,错误和异常是不同的概念 错误: Python 的语法错误或者称之为解析错,大多是因为写代码写错了出现的 异常: 即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。 大多数的异常…

QT串口调试助手V2.0(源码全开源)--上位机+多通道波形显示+数据保存(优化波形显示控件)

首先关于Qt的安装和基本配置这里就不做重复说明了,注:本文在Qt5.14基础上完成 完整的项目开源仓库链接在文章末尾 图形控件——qcustomplot QCustomPlot是一个基于Qt框架的开源绘图库,用于创建高质量的二维图表和数据可视化。 QCustomPlot…

【PL理论】(12) F#:模块 | 命名空间 | 异常处理 | 内置异常 |:? | 相互递归函数

💭 写在前面:本章我们将介绍 F# 的模块,我们前几章讲的列表、集合和映射都是模块。然后我们将介绍 F# 中的异常,以及内置异常,最后再讲解一下相互递归函数。 目录 0x00 F# 模块(Module) 0x01…

堡垒机的自动化运维,快速安全提升运维效率

随着信息技术的突飞猛进,企业对于IT系统的依赖程度日益加深,不仅希望可以提高运维效率,也希望能保障IT系统的安全。因此堡垒机与自动化运维技术的结合应运而生,堡垒机的自动化运维,快速安全提升运维效率。今天我们就来…

人工智能和物联网如何结合

欢迎来到 Papicatch的博客 文章目录 🍉引言 🍉AI与IoT的结合方式 🍈数据处理和分析 🍍实例 🍈边缘计算 🍍实例 🍈自动化和自主操作 🍍实例 🍈安全和隐私保护 &…

YOLOv10 超详细解析 | 网络结构、训练策略、论文解读

网络结构 1. Backbone 2. Head 3. 说明 网络结构按 YOLOv10m 绘制,不同 scale 的模型在结构上略有不同,而不是像 YOLOv8 一样仅调整 depth 和 width。Head 有部分后续计算与 YOLOv8 完全相同,上图省略,具体请看此文。YOLOv10 整…

以sqlilabs靶场为例,讲解SQL注入攻击原理【42-53关】

【Less-42】 使用 or 11 -- aaa 密码,登陆成功。 找到注入点:密码输入框。 解题步骤: # 获取数据库名 and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- aaa# 获取数据表名 and updatexml(1,concat(0x7e,(select group_conca…

QT案例 记录解决在管理员权限下QFrame控件获取拖拽到控件上的文件路径

参考知乎问答 Qt管理员权限如何支持拖放操作? 的回答和代码示例。 解决在管理员权限运行下,通过窗体的QFrame子控件获取到拖拽的内容。 目录标题 导读解决方案详解示例详细 【管理员权限】在QFrame控件中获取拖拽内容 【管理员权限】继承 IDropTarget 类…