You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

服务账号调用Google Vault API报400:用户不属于G Suite客户

问题现象

通过Google API控制台生成的服务账号JSON凭据调用Google Vault API执行简单查询时,接口返回400状态码(Invalid Request / Invalid Argument),错误提示如下:

The user does not belong to a G Suite customer.

初始调用代码(Ruby):

matter_id = 'xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
vault = Google::Apis::VaultV1::VaultService.new
scope = 'https://www.googleapis.com/auth/ediscovery.readonly'
vault.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
  json_key_io: File.open('./xxxxxxxxxx.json'),
  scope: scope)
vault.authorization.fetch_access_token!
m = vault.get_matter(matter_id)
故障原因

服务账号是独立的API身份,本身不归属任何G Suite/Google Workspace租户,默认直接用服务账号身份请求Vault API时,服务端无法匹配到对应的G Suite客户上下文,因此触发该报错。该问题不需要修改下载的JSON凭据文件本身,只需要在代码中补充身份模拟配置即可。

修复方法

初始化服务账号凭据后,调用update!方法配置sub参数,填入G Suite域内拥有Vault操作权限的合法用户邮箱,模拟该域用户身份发起请求即可正常调用。
修正后的代码(Ruby):

matter_id = 'xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'
vault = Google::Apis::VaultV1::VaultService.new
scope = 'https://www.googleapis.com/auth/ediscovery.readonly'
credentials = Google::Auth::ServiceAccountCredentials.make_creds(
  json_key_io: File.open('./xxxxxxxxxx.json'),
  scope: scope)
credentials.update!(sub: 'user@domain.com')
vault.authorization = credentials
vault.authorization.fetch_access_token!
m = vault.get_matter(matter_id)

内容的提问来源于stack exchange,提问作者Jeff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:21:24