如何使用服务账号认证Google Workspace Admin API?问题排查
问题原因及解决步骤
你遗漏了服务账号模拟域内管理员身份并完成认证授权的关键步骤。服务账号本身没有Google Workspace域的访问权限,即使配置了全域委派,也需要显式指定要模拟的域内管理员账号,并完成认证流程后才能调用Admin SDK API。
修正后的代码示例
import { google } from 'googleapis'; // 创建JWT认证客户端,模拟域内管理员账号 const client = new google.auth.JWT({ // 已设置GOOGLE_APPLICATION_CREDENTIALS环境变量,会自动加载服务账号信息 scopes: ['https://www.googleapis.com/auth/admin.directory.group.readonly'], // 按需选择权限范围 subject: 'admin@your-domain.com' // 替换为你的域内管理员邮箱 }); // 完成授权 await client.authorize(); // 初始化admin API客户端并传入已授权的认证对象 const admin = google.admin({ version: 'directory_v1', auth: client }); // 调用群组列表接口 const groupsResponse = await admin.groups.list({ domain: process.env.GOOGLE_DOMAIN, }); console.log(groupsResponse.data);
额外注意事项
- 确保你指定的
subject邮箱是Google Workspace域内拥有查看群组权限的管理员账号。 - 服务账号的全域委派设置中,必须已添加
https://www.googleapis.com/auth/admin.directory.group.readonly(或对应读写权限)的API范围。
内容的提问来源于stack exchange,提问作者THpubs
相关产品推荐
相关产品推荐

