Authing 知识库
🛠 开发资源🥂 集成案例🔭 常见问题🖥 控制台
3.0.0
3.0.0
  • 欢迎
  • Authing 概述
  • 快速开始
    • 注册 Authing 开发者账号
    • 第一个应用
    • 基础概念
    • 实现单点登录
    • 控制台概览
    • 部署模型和价格
    • 最佳开发实践
    • 我该如何选择 Authing 的技术
  • 进阶指南
    • 理解认证和授权
      • 用户名 - 密码认证
      • 邮箱 - 密码认证
      • 手机 - 验证码认证
      • JWT Token 释义及使用
    • 验证 Token
    • 配置用户权限
    • 迁移老数据进 Authing
    • 错误代码
  • 认证
    • 接入 OAuth 2.0
      • 创建 OAuth 应用
      • 使用 OAuth 授权
    • 接入 OpenID Connect
      • 创建 OIDC 应用
      • 使用 OIDC 授权
      • 理解 OIDC 流程
      • OIDC 常见问题
    • 接入 SAML
      • 创建 SAML Identity Provider 应用
      • 创建 SAML Service Provider 应用
      • 理解 SAML 流程
      • 同时使用 Authing 作为 SP 和 IdP
      • 使用 SAML Identity Provider
        • 在阿里云访问管理中使用
        • 在腾讯云访问管理中使用
        • 在 Auth0 中使用
      • 使用 SAML Service Provider
        • 与 Auth0 SAML IdP 对接
        • 与 SSOCircle SAML IdP 对接
    • 接入 LDAP
      • 配置 LDAP 服务
      • 使用 Authing 的 LDAP 用户目录
    • 接入 Active Directory
  • 社会化登录
    • 接入 Web 端社会化登录
      • GitHub 登录
      • 微信 PC 扫码登录
      • 微信 APP 内网页登录
      • 企业微信(第三方应用)网页授权登录
      • 企业微信(第三方应用)扫码登录
      • 企业微信(企业内部)扫码登录
      • 新浪微博登录
      • 钉钉登录
      • QQ 登录
      • 配置登录授权 Scope
    • 接入移动端社会化登录
      • 微信登录
      • 支付宝登录
    • 接入小程序登录
      • 小程序登录
        • 用户登录凭证(code)最佳实践
      • APP 拉起小程序登录
    • 打通微信账号体系
  • 扫码登录
    • 小程序扫码登录
      • 接入私有化小程序
    • APP 扫码登录
      • 快速接入
      • Web 端 SDK
      • 完整接口列表
      • 自定义配置项
      • 扫码登录原理
  • 移动应用登录
    • 移动应用 SSO
      • 自动检测登录
      • 唤起 App 登录
    • 移动应用身份提供商
  • 授权
    • Authorization 基础概念
      • 什么是基于角色的管理(RBAC)
      • 什么是基于属性的管理(ABAC)
      • 什么是零信任网络
    • Authorization at Authing
    • 接入 RBAC
    • 接入 ABAC
    • 接入组织机构管理
  • 扩展能力
    • 自定义认证流程(Pipeline)
      • 创建你的第一个 Pipeline 函数
      • Pipeline 函数开发指南
      • 应用场景
      • user 对象
      • context 对象
      • 使用环境变量
      • 可用的 Node Modules
      • 如何调试
      • Node SDK
      • GraphQL API
      • 常见问题
      • 私有化部署
    • 使用 Webhook
    • 自定义用户字段
  • 开发资源
    • 开发资源
    • API(GraphQL)
    • Guard for Web
      • 自定义 Guard 的 UI 样式
    • Guard for Mobile
      • Guard for React Native
    • Guard VS 自定义 UI
    • SDK for 单点登录
    • SDK for JavaScript
      • 查询用户权限
      • 绑定社会化登录
      • 自定义用户字段
      • 管理 MFA 口令
      • 自定义请求链接
    • SDK for Node.js
      • 权限控制
      • 查询用户权限
      • 组织机构管理
      • 老版权限控制(deprecated)
      • Pipeline 函数
      • 自定义用户字段
      • 绑定社会化登录
      • 管理 MFA 口令
      • 自定义请求连接
    • SDK for React Native
    • SDK for 微信小程序
    • SDK for Java
    • SDK for Objective-C
    • SDK for Python
    • SDK for Go
    • SDK for PHP
    • 函数计算(FaaS)
  • 通信
    • 邮件
    • SMS
  • MFA
    • 配置 MFA 安全口令
      • 使用 Microsoft Authenticator 添加 MFA 令牌
    • 接入 MFA
  • 安全
    • 配置 Web 安全域
    • 配置用户池密码强度
    • 配置密码加密函数
  • 其他
    • 常见问题
    • 集成案例
      • Authing 与 AWS 集成案例
      • 函数计算与 AaaS 集成案例
      • Odoo 集成案例
      • 社会化登录集成案例
    • 社交互联数据
    • 为 Authing 贡献 SDK
      • 了解 Authing 的模块
Powered by GitBook
On this page
  • 准备工作
  • 在 Authing 控制台找到「企业微信(内部应用)扫码登录」
  • 获取企业ID(CorpID)
  • 获取 AgentID 和 Secret
  • 启用企业微信授权登录
  • 添加网页授权信任域名
  • 配置回调链接 Redirect URL
  • 开始接入
  • 拼接网页授权链接
  • 处理 Authing 回调数据
  • 完成接入

Was this helpful?

  1. 社会化登录
  2. 接入 Web 端社会化登录

企业微信(企业内部)扫码登录

Previous企业微信(第三方应用)扫码登录Next新浪微博登录

Last updated 4 years ago

Was this helpful?

准备工作

你一共需要准备以下内容:

    • 在创建账号的引导过程中,你会得到一个二级域名,在后面会用到。

  1. 在 Authing 控制台填入企业微信相关信息

在 Authing 控制台找到「企业微信(内部应用)扫码登录」

之后你需要将相关配置填入下面的表单:

获取企业ID(CorpID)

获取 AgentID 和 Secret

启用企业微信授权登录

在应用详情页,点击设置企业微信授权登录:

在新打开的页面,设置授权回调域为 core.authing.cn 。

添加网页授权信任域名

在应用详情页,设置网页授权及JS-SDK域名,填写你的 OIDC 应用二级域名,如 yourapp.authing.cn 。

配置回调链接 Redirect URL

如果你需要手动接入企业微信扫码登录,需要填写你的业务回调链接,用户授权之后,Authing 将会把用户信息回调给你。

开始接入

拼接网页授权链接

GET https://core.authing.cn/oauth/wechatwork/:userPoolId/sso-qrconnect-url

获取企业微信扫码授权登录链接,此链接需要在浏览器内访问!

Path Parameters

Name
Type
Description

userPoolId

string

用户池 ID

你可以在 Web 页面上放置一个可点击的按钮或 Logo 链接到上面的链接以便用户可以点击登录。

在浏览器中访问上述链接,你应该成功可以跳转企业微信扫码登录页面:

处理 Authing 回调数据

Authing 为你隐藏了和企业微信服务器的交互过程,你可以直接获取到用户信息。

上一步用户同意授权之后,会先跳转到 Authing 服务器,之后 Authing 会携带用户信息跳转到开发者在 Authing 控制台中配置的业务回调链接,并附带以下 Get 请求参数:

参数

说明

code

错误或成功代码,200 为成功,非 200 为失败

message

成功或错误信息

data

userInfo 用户信息,若 code 为非 200 不返回此参数

bindOAuth

Authing 回调给你的用户信息是经过加工过的,会自动注册到你的用户池,会和企业微信返回的原始数据不一样。

data (用户信息)示例:

{
  email: '',
  phone: null,
  emailVerified: false,
  username: 'liaozhangjiang',
  nickname: 'LiaoZhangJiang',
  company: '',
  photo: 'http://wework.qpic.cn/bizmail/mKZmqeWl7K57rTUjpictGYYpRgOgv9hMibGFjXqC05RKOkEFoibOrbzCw/0',
  loginsCount: 9,
  registerMethod: 'oauth:wechatwork-qrconnect',
  blocked: false,
  isDeleted: false,
  oauth: '{"corpid":"ww736adab7f131153d","userid":"LiaoZhangJiang","deviceId":"883CBA07-87A3-46B2-94FF-6907D447D398","name":"LiaoZhangJiang","gender":"1","avatar":"http://wework.qpic.cn/bizmail/mKZmqeWl7K57rTUjpictGYYpRgOgv9hMibGFjXqC05RKOkEFoibOrbzCw/0","qr_code":"https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=vcc027dee84b322352"}',
  metadata: '"{}"',
  _id: "5e7efb7ff0dfe6f2ffb64763",
  unionid: 'ww:ww736adab7f131153d:LiaoZhangJiang',
  openid: 'ww:ww736adab7f131153d:LiaoZhangJiang',
  lastIP: '::ffff:127.0.0.1',
  lastLogin: "2020-03-28T10:17:14.764Z",
  signedUp: "2020-03-28T07:23:43.764Z",
  token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7ImVtYWlsIjoiIiwidW5pb25pZCI6Ind3Ond3NzM2YWRhYjdmMTMxMTUzZDpMaWFvWmhhbmdKaWFuZyIsImlkIjoiNWU3ZWZiN2ZmMGRmZTZmMmZmYjY0NzYzIiwiY2xpZW50SWQiOiI1ZTRjZGQwNTVkZjNkZjY1ZGM1OGI5N2QifSwiaWF0IjoxNTg1MzkwNjM0LCJleHAiOjE1ODY2ODY2MzR9.Jt7ovlBgl_Lfb63lK5OWaClFDZypxUFP8J32TerBUDY',
  tokenExpiredAt: 2020-04-12T10:17:14.000Z
}

以下是使用 JavaScript 从 URL 参数中获取用户数据的代码:

// 获取 URL 参数
function getQueryString(name) {
    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    return null;
}

// 将 Code 转为 Int 类型,方便判断
const code = parseInt(getQueryString('code'));

if(code !== 200) {
  // 出错了
  const errorMsg = getQueryString('message');
  // 展示 errorMsg 给用户或执行其他业务 ...
  
}else {
  const userInfo = getQueryString('data');
  
  // 将 token 存储到 localStorage 
  // 建议在之后的请求中附带 Token,并由后端验证 Token 合法性
  localStorage.setItem('token', userInfo.token);
}

完成接入

在 页面可以获取到。

在 页面的应用详情可以获取到。

如果你使用 ,可以留空填 「#」。

比如你的用户池 ID 为 5e4cdd055df3df65dc58b97d,则你需要引导你的用户跳转到

是否是登录操作, 无此参数或此参数为0则为登录, 此参数为1则为绑定账号操作, 此时可使用data参数中的数据

部分浏览器和 Web Server 在 URL 过长的情况下有可能出现 404,如 ASP.NET,这个时候需要修改一下配置,具体方式请见。

恭喜你,此时已经接入了企业微信扫码登录。获取到用户信息之后,你可以得到登录凭证 token,你可以在后续的 API 请求中携带上此 token, 然后在后端接口中根据此 token 区分不同用户,详情请见。

我的企业 - 企业信息
应用管理 - 应用管理
Guard
https://core.authing.cn/oauth/wechatwork/5e4cdd055df3df65dc58b97d/sso-qrconnect-url
这个 StackOverflow 回答
验证 token
注册 Authing 开发者账号
注册一个企业微信账号
绑定OAuth