如何使用Python从Auth0获取全部用户列表及总用户数量
Python从Auth0获取全量用户列表及统计总数的实现方法
前置准备
- 登录Auth0管理后台,创建一个Machine-to-Machine应用,为该应用授予Management API的
read:users权限 - 记录该应用的
DOMAIN、CLIENT_ID、CLIENT_SECRET三个参数,后续代码需要用到
实现代码
Auth0的用户查询接口默认开启分页,单页最多返回100条数据,因此代码需要加入分页逻辑才能拉取到所有用户,以下提供两种实现方式:
方式1:使用官方SDK实现
首先安装依赖:pip install auth0-python
完整代码:
from auth0.authentication import GetToken from auth0.management import Auth0 # 替换为自身Auth0租户的对应参数 AUTH0_DOMAIN = "你的租户域名.auth0.com" CLIENT_ID = "你的M2M应用Client ID" CLIENT_SECRET = "你的M2M应用Client Secret" # 获取管理API访问令牌 get_token = GetToken(AUTH0_DOMAIN, CLIENT_ID, client_secret=CLIENT_SECRET) token = get_token.client_credentials(f"https://{AUTH0_DOMAIN}/api/v2/") access_token = token["access_token"] # 初始化管理客户端 auth0 = Auth0(AUTH0_DOMAIN, access_token) all_users = [] page = 0 per_page = 100 # 接口允许的单页最大返回条数 while True: # 分页拉取用户 users_page = auth0.users.list(page=page, per_page=per_page) current_page_users = users_page["users"] if not current_page_users: break all_users.extend(current_page_users) page += 1 # 统计用户总数 total_user_count = len(all_users) print(f"用户总数量:{total_user_count}") print("所有用户列表:", all_users)
方式2:使用原生requests实现
无需安装额外SDK,直接调用接口:
import requests AUTH0_DOMAIN = "你的租户域名.auth0.com" CLIENT_ID = "你的M2M应用Client ID" CLIENT_SECRET = "你的M2M应用Client Secret" # 获取访问令牌 token_url = f"https://{AUTH0_DOMAIN}/oauth/token" token_payload = { "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "audience": f"https://{AUTH0_DOMAIN}/api/v2/", "grant_type": "client_credentials" } token_response = requests.post(token_url, json=token_payload) access_token = token_response.json()["access_token"] headers = {"Authorization": f"Bearer {access_token}"} all_users = [] page = 0 per_page = 100 while True: users_url = f"https://{AUTH0_DOMAIN}/api/v2/users" params = {"page": page, "per_page": per_page} response = requests.get(users_url, headers=headers, params=params) current_page = response.json() if not current_page: break all_users.extend(current_page) page += 1 total_user_count = len(all_users) print(f"用户总数量:{total_user_count}")
注意事项
- 若仅需要统计用户总数不需要用户详情,可直接调用
/api/v2/users/count接口,无需分页拉取全量用户,性能更高,直接通过requests.get(f"https://{AUTH0_DOMAIN}/api/v2/users/count", headers=headers).json()["total"]即可拿到总数 - 拉取用户时可通过
fields参数指定需要返回的用户字段,减少数据传输量,比如仅需要邮箱和用户ID时,可添加参数fields: "email,user_id", include_fields: "true" - 注意遵守Management API的速率限制,避免短时间高频请求被限流
内容的提问来源于stack exchange,提问作者sydadder
相关产品推荐
相关产品推荐

