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

通过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://JYB9CtLD.ycwym.cn
http://tWvuMPqN.ycwym.cn
http://4SpZ11UF.ycwym.cn
http://guocq0Z3.ycwym.cn
http://9wYI1xL1.ycwym.cn
http://nBE6wsPE.ycwym.cn
http://mrqrmxxs.ycwym.cn
http://EU0ChaLR.ycwym.cn
http://npj2UCsz.ycwym.cn
http://cA92AArM.ycwym.cn
http://JOXPmbWC.ycwym.cn
http://LioEIvLm.ycwym.cn
http://s8zD12EB.ycwym.cn
http://Y3HADiRX.ycwym.cn
http://tReDW6ZS.ycwym.cn
http://NCh7SQdJ.ycwym.cn
http://wDR5AG6c.ycwym.cn
http://TxCC3O4c.ycwym.cn
http://rMYb3fcG.ycwym.cn
http://jIxxw3Ui.ycwym.cn
http://H2t4ra7y.ycwym.cn
http://SwVwe31x.ycwym.cn
http://iPX1UG3J.ycwym.cn
http://EXY7qtrN.ycwym.cn
http://j1PfC2ZL.ycwym.cn
http://DjBAXYXy.ycwym.cn
http://i4RGRQqL.ycwym.cn
http://Gqwi0aKK.ycwym.cn
http://KS7ftsEx.ycwym.cn
http://V1SYPcbI.ycwym.cn
http://www.dtcms.com/a/368703.html

相关文章:

  • 飞算JavaAI炫技赛:电商系统开发全流程实战解析
  • MySQL集群——主从复制
  • 项目必备流程图,类图,E-R图实例速通
  • 苹果 AI 探秘:代号 “AFM” —— “温柔的反叛者”
  • CAN通信入门
  • 1分钟了解等保测评流程
  • 【GEOS-Chem模型第三期】使用 Spack 构建 GEOS-Chem 等
  • 【Linux手册】动静态库:从原理到制作
  • 嵌入式ARM64 基于RK3588原生SDK添加用户配置选项build lunch
  • 深度学习——残差神经网路
  • 传统神经网络实现-----手写数字识别(MNIST)项目
  • Maven常见问题解决方案
  • 一文详解深度学习中神经网络的各层结构与功能!
  • Java全栈开发工程师面试实录:从基础到实战的深度探讨
  • Unity打包Android应用常见问题解决指南
  • Snow Shot(截图工具) v0.2.6
  • LeNet-5:手写数字识别经典CNN
  • C++ opencv RTSP小工具 RTSP流播放、每一帧保存
  • android View详解—动画
  • 2024年9月GESPC++三级真题解析(含视频)
  • ASP.NET Core文件分片上传
  • OCA、OCP、OCM傻傻分不清?Oracle认证就看这篇
  • 面试了一个外包公司,面试不到5分钟就出来,这问题问得有点变态。。。。。。
  • Matlab使用小技巧合集(系列四):Table类型高效用法与数据处理实战
  • 25高教社杯数模国赛【C题超高质量思路+可运行代码】第十弹
  • WinForms 项目里生成时选择“首选目标平台 32 位导致有些电脑在获取office word对象时获取不到
  • ANSYS 热力耦合计算
  • UE4 Mac构建编译报错 no member named “disjunction” in namespace “std”
  • 深度相机详解
  • vue 经常写的echarts图表模块结构抽取