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

通过API接口管理企业微信通讯录案例

1.开始前需要登录企业微信管理员后台,开启通讯录同步,同时添加企业可信IP地址,记录下Secret信息和企业ID,后面的程序会用到这两个参数。

图片

2.下面是用python写的创建企业微信账号的具体案例。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
企业微信通讯录 API:创建成员(单个账号)示例
官方文档:https://developer.work.weixin.qq.com/document/path/90195
"""
import os
import sys
import json
import time
import requests
from typing import Dict, Any
# ========= 1. 配置区 =========
# ⚠️ 请替换成自己企业的真实信息
CORP_ID = "wwassssssssssssssss"               # 企业ID
CONTACT_SYNC_SECRET = "Y4ffffffff_UDf_fffffffffffzWY4"  # “通讯录同步”专用 Secret
# 要创建的成员信息(字段含义见官方文档)
NEW_USER = {"userid": "I00555",          # 账号:必须唯一,建议用小写英文/数字 "name": "张三","alias": "San Zhang",          # 可选"mobile": "+86 13800001234",   # mobile 与 email 二者必填其一"department": [1],             # 所在部门ID,根部门为1"position": "产品经理","gender": "1",                 # 1男 2女 0未知"email": "zhangsan@example.com"
}
# ========= 2. 工具函数 =========
def get_access_token(corp_id: str, secret: str) -> str:"""获取 access_token(有效期 7200s,建议本地缓存)"""url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"params = {"corpid": corp_id, "corpsecret": secret}resp = requests.get(url, params=params, timeout=10)data = resp.json()if data.get("errcode") != 0:raise RuntimeError(f"获取token失败 → {data}")return data["access_token"]
def create_user(token: str, user: Dict[str, Any]) -> Dict[str, Any]:"""创建成员"""url = f"https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token={token}"resp = requests.post(url, json=user, timeout=10)return resp.json()
# ========= 3. 主流程 =========
def main():try:print("[Step 1] 获取 access_token ...")token = get_access_token(CORP_ID, CONTACT_SYNC_SECRET)print("✅ token 获取成功,前10位:", token[:10])print("[Step 2] 创建成员 ...")ret = create_user(token, NEW_USER)if ret.get("errcode") == 0:print("✅ 创建成功,userid =", NEW_USER["userid"])else:print("❌ 创建失败,返回:", ret)# 常见错误码快速提示if ret.get("errcode") == 60121:print("提示:部门ID不存在,请检查 department 字段")elif ret.get("errcode") == 60102:print("提示:手机号已被其他成员占用")elif ret.get("errcode") == 48009:print("提示:无权限,请确认使用了「通讯录同步」专用 Secret,且 IP 已在白名单")sys.exit(1)except Exception as e:print("发生异常:", e)sys.exit(1)
# ========= 4. 运行 =========
if __name__ == "__main__":main()

3.下面是用python写的删除企业微信账号的具体案例。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
企业微信 API 删除成员(单个账号)
官方文档:https://developer.work.weixin.qq.com/document/path/90198
"""
import os
import sys
import json
import requests
from typing import Dict
# ========== 1. 配置区(请替换成你的真实信息) ==========
CORP_ID = "wwffffffffffffff03"                       # 企业 ID
CONTACT_SYNC_SECRET = "Y4dddddddddddddddddddddsssssY4"   # “通讯录同步”专用 Secret
USER_ID_TO_DELETE = "I00555"                       # 要删除的成员 userid
# ========== 2. 工具函数 ==========
def get_access_token(corp_id: str, secret: str) -> str:"""获取 access_token(有效期 7200 s,建议本地缓存)"""url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"params = {"corpid": corp_id, "corpsecret": secret}resp = requests.get(url, params=params, timeout=10)data = resp.json()if data.get("errcode") != 0:raise RuntimeError(f"获取 token 失败 → {data}")return data["access_token"]
def delete_user(token: str, userid: str) -> Dict:"""删除单个成员"""url = f"https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token={token}&userid={userid}"resp = requests.get(url, timeout=10)return resp.json()
# ========== 3. 主流程 ==========
def main():try:print("[Step 1] 获取 access_token …")token = get_access_token(CORP_ID, CONTACT_SYNC_SECRET)print("✅ token 获取成功,前 10 位:", token[:10])print(f"[Step 2] 删除成员(userid={USER_ID_TO_DELETE})…")ret = delete_user(token, USER_ID_TO_DELETE)if ret.get("errcode") == 0:print("✅ 删除成功")else:print("❌ 删除失败,返回:", ret)# 常见错误码提示if ret.get("errcode") == 60111:      # 官方错误码print("提示:成员 userid 不存在")elif ret.get("errcode") == 48009:print("提示:无权限,请确认:\n""  1) 使用了『通讯录同步』专用 Secret\n""  2) 当前出口 IP 已加入企业微信后台白名单")sys.exit(1)except Exception as e:print("发生异常:", e)sys.exit(1)
# ========== 4. 运行 ==========
if __name__ == "__main__":main()

http://www.xdnf.cn/news/20089.html

相关文章:

  • AI大模型如何重塑日常?从智能办公到生活服务的5个核心改变
  • 算法模板(Java版)_DFS与BFS
  • 贵州移动创维E900V22F-S905L3SB-全分区备份
  • 【Linux网络编程】应用层协议-----HTTPS协议
  • C#中IEnumerable 、IAsyncEnumerable、yield
  • 13问详解VoLTE视频客服:菊风带你从基础到应用,厘清所有疑惑
  • 储能调峰新实践:智慧能源平台如何保障风电消纳与电网稳定?
  • 从 0 到 1 攻克订单表分表分库:亿级流量下的数据库架构实战指南
  • 嵌入式第四十六天(51单片机(通信))
  • 2025年你需要了解的大型语言模型部署工具
  • 配置WSL2的Ubuntu接受外部设备访问
  • 课前准备--基因组(WGS/WES)联合单细胞获取突变信息
  • 分析KLA-Tencor公司膜厚THK产品
  • Python 算数运算练习题
  • 应对技术选型与技术债务以及架构设计与业务需求的关系
  • 概率与数理统计公式及结论汇总
  • 从策略到实效|Adobe Target 实战应用与成功案例
  • uni-app iOS 文件调试常见问题与解决方案:结合 itools、克魔、iMazing 的实战经验
  • 用spring框架实现简单的MVC业务
  • 远程协作下的项目失控:不是信任危机,而是感知缺失
  • 7种流行Prompt设计模式详解:适用场景与最佳实践
  • 快速、归并、堆、希尔、ArrayList排序
  • pyinstaller
  • SQL decode() 函数
  • Python爬虫实战:研究Axes Grid模块,构建旅游平台酒店数据采集和分析系统
  • VNC连接服务器实现远程桌面-针对官方给的链接已经失效问题
  • Linux 综合练习
  • LTE CA和NR CA的区别和联系
  • 第七章 Cesium 3D 粒子烟花效果案例解析:从原理到完整代码
  • CSS Position 属性