# 实现网页方式登录应用(登录第三方网站)  更新于 2026-07-02本文档指导你如何实现用户通过浏览器登录应用(扫码或账密方式)。在本场景中,企业内部应用可以通过浏览器网页方式获取用户授权的个人信息。 **说明** - 企业内部应用与三方企业应用实现流程类似,本文档以企业内部应用实现流程为例。 - 因内部应用的安全考虑,企业内部应用**不支持跨组织**授权登录。即只有组织内的用户可以通过浏览器网页方式登录应用。 ## **简介** ### **教学内容** 本教程介绍用户通过网页(浏览器)的方式登录钉钉应用,并在第三方网站获取用户授权信息。 ### **教学目标** 将通过两种实现方式实现网页登录钉钉应用: - 内嵌二维码方式实现用户登录授权 - 构造钉钉登录链接的方式实现用户登录授权 ### **教学范围** 面向钉钉应用开发者 ## **前提条件** - 已经获取开发者权限。 - 已经申请了`Contact.User.mobile`和`Contact.User.Read`权限点,如何申请可参考[添加接口调用权限](https://open.dingtalk.com/document/development/add-api-permission#)。 - 已经安装了 IDE 或其他开发工具。 - 已经安装了 [node.js](https://nodejs.org/en/download),并完成了相关[环境的配置](https://m.runoob.com/nodejs/nodejs-install-setup.html)。 - 已经安装了 [maven](https://maven.apache.org/),并完成了相关[环境的配置](https://maven.apache.org/install.html)。 - 已经安装了 [JDK](https://www.oracle.com/java/technologies/downloads/?er=221886),并完成了相关[环境的配置](https://docs.oracle.com/en/java/javase/24/install/overview-jdk-installation.html)。 ## **开发流程** ### **方式一:使用钉钉提供的页面登录授权** 构造钉钉应用授权登录访问地址 **重要** - 为了方便阅读,以下参数示例做了换行处理。正常情况下无需进行参数换行。 - redirect\_uri必须要做urlencode,以下示例已经进行urlencode。 - 以下登录页面在初次校验登录状态时显示。 redirect\_uri必须要做urlencode 1 2 3 4 5 6 7 https://login.dingtalk.com/oauth2/auth? redirect\_uri\=https%3A%2F%2Fwww.aaaaa.com%2Fauth &response\_type\=code &client\_id\=dingxxxxxxx //应用的AppKey &scope\=openid corpid //此处的openId保持不变 &state\=dddd &prompt\=consent Enter to Rename, ⇧Enter to Preview | 参数 | 是否必填 | 说明 | |---------------|------|------------------------------------------------------------------------------------------------------------------------------------| | redirect_uri | 是 | 授权通过/拒绝后回调地址。 **重要** 需要与开发者后台钉钉登录与分享的地址保持一致,redirect_uri需要进行urlencode。 | | response_type | 是 | 固定值为code。 授权通过后返回authCode。 | | client_id | 是 | 步骤一中创建的应用详情中获取。 - 企业内部应用:client_id为应用的 Client ID。 - 第三方企业应用:client_id为应用的 Client ID。 | | scope | 是 | 授权范围,授权页面显示的授权信息以应用注册时配置的为准。 当前只支持两种输入: - **openid**:授权后可获得用户userid - **openid corpid**:授权后可获得用户id和登录过程中用户选择的组织id,空格分隔。注意url编码。 | | prompt | 是 | 值为consent时,会进入授权确认页。 | | state | 否 | 跟随authCode原样返回。 | | org_type | 否 | 控制输出特定类型的组织列表,org_type=management 表示只输出有管理权限的组织。 **重要** scope包含corpid时该参数存在意义。 | | corpId | 否 | 用于指定用户需要选择的组织。 **重要** - scope包含corpid时该参数存在意义。 - 传入的corpId需要是当前用户所在的组织。 | ### **方式二:内嵌二维码方式登录授权** **重要** 嵌入二维码的页面必须和redirect\_uri参数所指定的页面“同源”,否则扫码后会没有反应,“同源”指:协议相同、二级或三级域名相同、端口号相同等。详情请参考文档[浏览器的同源策略](https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy)。 1. 在页面中引入钉钉扫码登录 JS SDK。 1 Enter to Rename, ⇧Enter to Preview 2. 在需要引入扫码登录的地方,调用如下方法。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21