使用服务账号调用Google Ads API时遇NOT_ADS_USER认证错误求助
解决Google Ads API
NOT_ADS_USER 认证错误 核心问题
你的google-ads.yaml中impersonated_email配置的是服务账号邮箱,但服务账号本身不是Google Ads的有效用户。Google Ads API要求服务账号必须模拟拥有目标客户账号权限的普通Google账号(或Workspace账号),而非服务账号自身。
修复步骤
1. 修改配置文件
更新google-ads.yaml的impersonated_email字段,替换为你拥有Ads管理员权限的个人邮箱(如your-admin-email@gmail.com或Workspace域邮箱):
json_key_file_path: 'service.json' impersonated_email: 'your-ads-admin-email@example.com' # 替换为你的Ads管理员邮箱 use_proto_plus: True developer_token: 'developer_token'
2. 配置域范围委派(仅Google Workspace用户)
如果你的管理员邮箱是Workspace账号,需在Workspace后台给服务账号授权模拟权限:
- 登录Workspace管理员后台,进入「安全」→「API控制」→「域范围委派」
- 添加服务账号的客户端ID(从
service.json的client_id字段获取) - 授权API范围:
https://www.googleapis.com/auth/adwords - 保存设置
3. 将服务账号添加到Google Ads客户账号
服务账号无法接收邀请,需直接通过Ads管理员账号添加:
- 登录Google Ads后台,进入目标客户账号
- 打开「工具与设置」→「访问与权限」→「用户」
- 点击「+」,输入服务账号邮箱(
service_acc@project.iam.gserviceaccount.com) - 分配对应权限(如管理员),完成添加(无需接受,立即生效)
4. 验证代码参数
确保调用mutate_user_lists时传入的customer_id是不带横杠的10位数字(例如1234567890,而非123-456-7890)。
额外提示
- 测试账号可能存在权限限制,确认已开通Customer Match相关功能
- 检查
developer_token是否与当前Ads账号绑定且有效
内容的提问来源于stack exchange,提问作者Mquinteiro
相关产品推荐
相关产品推荐

