当前位置: 首页 > news >正文

企业微信H5应用OAuth2登录,企业微信授权登录

企业微信H5应用的OAuth2登录流程主要用于获取用户身份信息,实现免登录功能。以下是实现步骤的详细说明。

1. 构造网页授权链接

在前端触发跳转到企业微信授权页面,构造授权链接如下:

const appId = 'YOUR_APP_ID'; // 企业微信应用IDconst redirectUri = encodeURIComponent('https://yourdomain.com/callback'); // 回调地址const state = 'random_string'; // 防止CSRF攻击的随机字符串const scope = 'snsapi_base'; // 授权类型,可选snsapi_base或snsapi_privateinfoconst authUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=${scope}&state=${state}#wechat_redirect`;window.location.href = authUrl;

用户点击后会跳转到企业微信授权页面,完成授权后返回指定的回调地址并附带code参数。

2. 后端获取Access Token

在回调地址中,后端通过code获取用户信息:

import requests# 企业微信API参数corp_id = "YOUR_CORP_ID"corp_secret = "YOUR_CORP_SECRET"code = "CODE_FROM_CALLBACK"# 获取Access Tokentoken_url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corp_id}&corpsecret={corp_secret}"token_response = requests.get(token_url).json()access_token = token_response.get("access_token")# 使用Access Token和Code获取用户信息user_info_url = f"https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={access_token}&code={code}"user_info_response = requests.get(user_info_url).json()print(user_info_response)

返回的用户信息中包含UserId等基本信息,可用于后续业务逻辑。

3. 注意事项

  • 可信域名配置:在企业微信管理后台设置可信域名,确保回调地址合法。

  • 静默授权与手动授权snsapi_base为静默授权,仅获取基本信息;snsapi_privateinfo需用户确认,可获取敏感信息。

  • 安全性:使用随机字符串作为state防止CSRF攻击。

4. 最佳实践

  • 在前端处理回调时,清除URL中的codestate参数,避免重复跳转。

  • 定期刷新Access Token,避免因过期导致请求失败。

通过以上步骤,即可实现企业微信H5应用的OAuth2登录功能。

http://www.dtcms.com/a/298586.html

相关文章:

  • RocketMQ 做成服务启动
  • FastGPT:重新定义企业专属知识库的灵活部署
  • Linux进程信号——信号产生
  • 【LeetCode 热题 100】22. 括号生成——(解法一)选左括号还是选有括号
  • Linux嵌入式工程师学习路线
  • Linux系统基本配置以及认识文件作用
  • 执行测试时测试数据准备困难如何处理?
  • 汪小菲食通达公司成立新零售公司,布局餐饮零售新赛道
  • 【算法】动态规划 · 上篇
  • Python day24
  • CRM 系统:实现商机全流程管理的关键
  • Qt XML 与 JSON 数据处理方法
  • 文搜图/图搜图
  • OSPF 协议(多区域)
  • Inception网络架构:深度学习视觉模型的里程碑
  • 去甲基化药物联合DLI治疗AML1-ETO阳性
  • 图书推荐-由浅入深的大模型构建《从零构建大模型》
  • 【C++避坑指南】vector迭代器失效的八大场景与解决方案
  • 管理系统模板
  • 应用程序无法正常启动(0xc000007b)怎么办 解决方法详解
  • Matlab学习笔记:结构基础
  • 数仓规范体系的构建
  • SVM多分类实战:从理论到应用的完整指南
  • Linux的磁盘存储管理实操——(下二)——逻辑卷管理LVM的扩容、缩容
  • 5.2.1 javascript 事件对象.内容补充.
  • 从零本地部署使用Qwen3-coder进行编程
  • 1.1.4 建筑隔震减震设计结构要求
  • SpringBoot创建项目的方式
  • Spring AOP `MethodInvocation` 工作原理
  • JavaScript 数组的 every() 和 some() 方法使用