Google Directory API入门:如何获取用户邮箱别名
解决Google Admin用户及别名获取问题
你当前的错误在于:users.list接口并不支持通过aliases参数直接获取用户别名,这个接口仅返回用户基础信息。要获取别名,需要调用单独的用户别名列表接口,为每个用户单独请求其别名数据。
修正后的实现步骤及代码
- 先调用
users.list获取所有用户列表 - 遍历每个用户,调用
users.aliases.list获取该用户的所有别名 - 将用户信息与别名数据整合
async function listUsersWithAliases() { let usersResponse; try { // 1. 获取所有用户基础信息 usersResponse = await gapi.client.directory.users.list({ 'customer': 'my_customer', 'orderBy': 'email' }); const users = usersResponse.result.users || []; const usersWithAliases = []; // 2. 遍历每个用户,获取别名 for (const user of users) { try { const aliasesResponse = await gapi.client.directory.users.aliases.list({ 'userKey': user.id // 使用用户ID或主邮箱作为userKey }); // 3. 整合用户信息和别名 usersWithAliases.push({ ...user, aliases: aliasesResponse.result.aliases || [] }); } catch (aliasErr) { console.error(`获取用户 ${user.email} 别名失败:`, aliasErr.message); // 别名获取失败时,保留用户基础信息,别名设为空数组 usersWithAliases.push({...user, aliases: []}); } } // 处理最终的用户及别名数据,比如渲染到页面 console.log('用户及别名列表:', usersWithAliases); document.getElementById('content').innerText = JSON.stringify(usersWithAliases, null, 2); } catch (err) { document.getElementById('content').innerText = `获取用户列表失败: ${err.message}`; return; } }
关键说明
userKey参数可以是用户的ID、主邮箱地址,或者me(仅当前认证用户)- 确保你的API授权范围包含
https://www.googleapis.com/auth/admin.directory.user.alias,否则会出现权限不足问题 - 若用户数量较多,建议添加请求节流处理,避免触发API频率限制
内容的提问来源于stack exchange,提问作者Cassie Simpson
相关产品推荐
相关产品推荐

