1.创建企业内部应用

首先在钉钉开放平台注册企业内部应用。

选择【企业内部开发】

创建H5微应用

填写相关信息

企业内部H5微应用创建完成

2.接口开发前准备

开发前必读

了解不同应用所能支持的能力

主要了解~账号授权(免登)

以及完成开发前必要的权限开放

3.企业内部应用免登开发流程

【钉钉开放平台接口调试平台】服务端

【钉钉开放平台接口调试平台】前端

1.获取免登授权码

  • 小程序免登

  • 微应用免登

2.获取AccessToken

调用接口获取access_token,链接。

3.获取userid

调用接口获取用户的userid,链接。

4.获取用户详情

调用接口获取用户详细信息,链接。

4.获取微应用免登授权码

获取微应用免登授权码—钉钉开发文档

虽然文档里的内容不多,但做测试,我们需要在本地启动一个web服务,然后通过内网穿透,在钉钉的工作台打开,才能获取到钉钉微应用免登授权码

4.1创建本地web服务

  1. 安装node(安装步骤)

  2. 安装express(安装步骤)

npm install -g express

3.新建项目文件夹 (ding_demo)

4.初始化项目

npm init -y

5.新建index.html文件(首页)

【开发文档参考】

【corpId来源】:开发者后台

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>弹出函数</title><!-- 引入外部js钉钉官方接口 --><script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.10.3/dingtalk.open.js"></script><script type="text/javascript">dd.ready(function() {dd.runtime.permission.requestAuthCode({corpId : "dingxxxxxxxxxxxx",onSuccess : function(result) {var code = result.code;alert('获取成功,你的免登code为:' + code);//将code 发往后台处理},onFail : function(err) {alert('出错了, 你获取了一个自定义错误' + err);}});});</script>
</head>
<body>
​<button id="code" onclick="dd.ready()">获取授权码</button>
​
</body>
</html>

6.新建app.js文件

var express = require('express')
const path = require('path')
​app = express()app.get('/' , function(req,res){console.log(__dirname)res.sendFile(path.resolve( filepath + "index.html" ));// index.html文件路径})app.listen(5000,function(){// web服务端口console.log("5000")})

项目文件结构

└── ding_demo/├── node_modules/                    ├── app.js/                    // web配置文件├── index.html/                // 首页├── package.json/              // 配置文件├── package-lock.json/         // 配置文件

7.启动服务

node app.js

【报错1】Uncaught (in promise) Error: Do not support the current environment:notInDingTalk

(原因:使用本地浏览器打开,没有在钉钉工作台打开)

【报错2】Uncaught (in promise) ReferenceError: dd is not defined

(原因:没有加载dingtalk.open.js,需在<head>标签内添加引入外部js钉钉官方接口)

<script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.10.3/dingtalk.open.js"></script>

【报错3】Uncaught SyntaxError: missing ) after argument list (at (index):32:6)

(原因:在32行处缺少)括号)

4.2内网穿透工具使用,获取到微应用免登授权码

由于钉钉内网穿透工具已废弃,这里使用花生壳作为内网穿透工具,来进行调试。

【免费】注册【花生壳】账号,设置内网穿透,内网服务端口与我们本地启的服务端口相同。

将创建的企业微应用,首页地址和PC端首页地址设置为花生壳提供的外网地址。【服务器出口IP】填上自己电脑的ip地址,百度输入IP即可查询到自己的IP地址。

启动web服务

node app.js

打开钉钉工作台,进入创建的企业微应用,即可查看到微应用免登授权码。【注意】只能使用微应用免登授权码,获取一次用户信息,获取用户信息后就失效。

为了方便微应用免登授权码复制,使用Promise修改

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>弹出函数</title><!-- 引入外部js钉钉官方接口 --><script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.10.3/dingtalk.open.js"></script><script type="text/javascript">function onReadyPromise() {let promiseA = new Promise((resolve, reject)=>{ dd.ready(()=>{ dd.runtime.permission.requestAuthCode({corpId: 'dingxxxxxxxxxxxxxxxxxxxxxx', // 企业idonSuccess: function (info) {// 通过该免登 可以获取免登授权码 //进行页面登录一系列操作,然后resolvealert("免登授权码:" + info.code);resolve(info.code);},onFail: function (res) { console.log(res);}});});dd.error(function (err) { console.log('dd error: ' + JSON.stringify(err)); });});promiseA.then(function(data){document.getElementById("rest").innerText = data;});}</script>
</head>
<body>
​
<button id="code" onclick="onReadyPromise()">获取授权码</button>
<h2 id="rest">显示</h2>
​
</body>
</html>

5.获取AccessToken

钉钉开发文档

【钉钉开放平台接口调试平台】服务端

接口信息

请求方式:GET

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

Query参数

名称 类型 是否必填 示例值 描述
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 返回码。

示例

请求示例(HTTP)

GET https://oapi.dingtalk.com/gettoken?appkey=appkey&appsecret=appsecret

返回示例

{"errcode": 0,"access_token-": "xxxxxxxxxxxx", "errmsg": "ok","expires_in": 7200
}

6.获取用户userid和用户信息

钉钉开发文档

 用户userid和用户信息接口基本信息

请求方式:POST

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

接口Query参数

名称 类型 是否必填 示例值 描述
access_token String 6ed1bxxx 调用服务端API的应用凭证。企业内部应用,通过获取企业内部应用的access_token接口获取。第三方企业应用,通过获取第三方企业应用的access_token接口获取。

接口Body参数

名称 类型 是否必填 示例值 描述
code String bab02f63c1e030fbbxxxx 免登授权码,获取方式请参考:小程序免登授权码微应用免登授权码说明 此授权码五分钟内有效,且只能使用一次。

返回参数

名称 类型 示例值 描述
request_id String e8krly4vyiln 请求ID。
errcode Number 0 返回码
errmsg String ok 对返回码的文本描述内容。
result UserGetByCodeResponse 返回结果。

示例

请求示例(HTTP)

POST https://oapi.dingtalk.com/topapi/v2/user/getuserinfo?access_token=ACCESS_TOKEN

请求正文

{"code":"bab02f63c1e030fbbxxxx"
}

返回示例

{"errcode": 0, "result": {"associated_unionid": "N2o5U3axxxx", "unionid": "gliiW0piiii02zBUjUxxxx", "device_id": "12drtfxxxxx", "sys_level": 1, "name": "张xx", "sys": true, "userid": "userid123"}, "errmsg": "ok"
}

钉钉企业内部应用获取登录用户信息相关推荐

  1. Spring MVC 实战:三种方式获取登录用户信息

    前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...

  2. 记录:实现钉钉(企业内部应用)登录第三方网站

    由于后台无法配合前端配置路由为history模式,故vue路由采用hash模式.但是钉钉扫码成功后会导致重定向地址格式错误: 错误格式:https://xxx.com/?authCode=xxxx#/ ...

  3. 微信小程序Ⅴ [获取登录用户信息,重点openID(详解)]

    ♩ 背景 其实这篇文章几个月前就写完了,但是这段时间,微信小程序官方文档有了更新,同事在我自己的实际操作过程中,发现之前写的过于繁杂,所以现在进行简化梳理,欢迎指摘. 语言框架:ThinkPHP3.2 ...

  4. 钉钉企业内部应用 - 获取考勤打卡结果

    本文是根据钉钉官方文档归纳所出,最后有 PHP 测试成功的 demo. 概述 钉钉登录是基于 OAuth2.0 协议标准构建的钉钉 OAuth2.0 授权登录系统. 在进行钉钉 OAuth2.0 授权 ...

  5. (详解)钉钉接口,PC端微应用,免登录及获取当前用户信息

    1.用了两天的时间,一直在研究微应用的,免登录及获取用户信息这一块. 但是钉钉官网写的太繁杂了,看了一天,硬是没看明白,最后,硬着头皮,一点点查资料,借鉴别人的代码,终于 研究 出来了,为了防止 年轻 ...

  6. 钉钉第三方企业应用,获取用户信息

    第一步:首先打开钉钉开发者后台登陆,选择"应用开发"->"第三方企业应用"->"小程序",点击"创建应用". ...

  7. 钉钉通知-调用钉钉发送企业内部消息开发

    首先,我们要明确需求:自己的系统需要发送通知消息到用户,接收消息用户为同一企业内的人员,选用短信可能涉及到费用问题,故可以选用钉钉或者企业微信,在此我使用钉钉进行发送消息. 调用钉钉发送企业内部消息: ...

  8. Spring学习笔记(二十三)——实现网站微信扫码登录获取微信用户信息Demo

    目录 微信扫码登录介绍 开发步骤 微信扫码登录示例 微信开放文档 遇到的问题 使用第三方工具实现网站微信扫码登录 开发前介绍 开发步骤 微信扫码登录获取微信用户信息Demo实现流程 实现效果 实现过程 ...

  9. 使用uc_authcode 获取论坛当前登录用户信息

    目的:使用uc_authcode 获取论坛当前登录用户信息 曲折:看了Discuz官方的ucenter二次开发手册,其中的Example如下: if(!empty($_COOKIE['Example_ ...

最新文章

  1. [图]吴恩达AI公司Drive.ai或已找到新买家--苹果
  2. 同步控制 之“重入锁”
  3. predicate 列存储索引扫描_ColumnStore index (列存储索引)解析
  4. Fragment基础讲解
  5. puppeteer api_使用Node.js和puppeteer API从URL创建PDF文件
  6. Linux驱动(5)--关于Bootloader
  7. Config Server高可用
  8. QTCreator中字符编码问题以及WINDOWS API A/W两种版本的说明
  9. 非平衡电桥电阻计算_双臂电桥(QJ44)的功能介绍与使用
  10. 敏捷个人学习----为什么的力量
  11. 浅谈算法和数据结构: 八 平衡查找树之2-3树
  12. 25个常用的正则表达式汇总
  13. centos7安装/卸载pip
  14. 用python对鹿晗、关晓彤微博进行情感分析 哭着学习学习~
  15. ui设计学习路线图分享送给初学者
  16. 每日一题.PYTHON面向对象编写模拟人生屌丝逆袭游戏(登录类/角色类/场景类)?
  17. 码距与检错或纠错能力的关系
  18. 无线AP和无线路由器区别 wifi热点
  19. 缺失msvcr120.dll一般性问题如何解决
  20. zzulioj1197 考试排名(一)(结构体专题)

热门文章

  1. 史上最全python字符串操作指南 #华为云·寻找黑马程序员#
  2. 输入法编程相关资源汇集
  3. cocos2d-js 手游解密jsc和WebSocket数据aes加密解密分析②
  4. 软件系统复杂性灾难及解决方案探究
  5. 测试人员必备数据库技术之数据库约束(五)
  6. 基于Java+JSP+MySQL基于SSM的医院挂号就诊系统——计算机毕业设计
  7. vue.js的手脚架vue-cli项目搭建的步骤
  8. GIS Geography
  9. Web前端开发技术:Vue开发基础(2)
  10. 如何在 Chrome 中执行 JavaScript 代码