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

使用Google.Apis.PeopleService.v1调用connections.list返回全null问题排查

问题根源与解决方案

你遇到的核心问题是服务账号本身没有关联的Google联系人数据,而且你没有配置域范围授权来模拟具体的Google Workspace用户,导致调用people/me时,这个"me"指向的是服务账号自身(它没有任何联系人),所以返回的结果对象字段全为null,进而触发NullReferenceException。

下面是详细的修复步骤:

1. 理解服务账号的限制

服务账号是Google Cloud提供的独立身份,不属于任何普通Google用户。默认情况下,它没有自己的Google联系人列表。要访问用户的联系人,你必须通过**域范围授权(Domain-Wide Delegation)**来模拟Google Workspace(原G Suite)域内的某个用户——注意:普通Google账号(非Workspace)无法使用这个功能,这种场景你需要改用OAuth 2.0授权码流程让用户手动授权。

2. 配置域范围授权

步骤A:在Google Cloud控制台启用服务账号的域范围授权

  • 进入你的Google Cloud项目,导航到IAM & Admin > 服务账号
  • 找到你使用的服务账号,点击"编辑"按钮
  • 勾选启用G Suite域范围授权,保存更改

步骤B:在Google Workspace Admin控制台授权Scopes

  • 登录你的Google Workspace管理员账号,导航到Security > API控制 > 域范围授权
  • 点击"添加新的授权"
  • 输入服务账号的客户端ID(可以在Google Cloud控制台的服务账号详情页找到)
  • 在"OAuth Scopes"输入框中添加你需要的权限:
    https://www.googleapis.com/auth/contacts.readonly,https://www.googleapis.com/auth/contacts
    
  • 保存授权设置

3. 修改代码模拟指定用户

在创建Credential时,必须指定要模拟的Google Workspace域内用户的邮箱,这样people/me才会指向该用户的联系人列表:

var scopes = new[] { PeopleServiceService.Scope.ContactsReadonly, PeopleServiceService.ScopeConstants.Contacts };
var credential = GoogleCredential.FromFile("./my-secrets.json")
    .CreateScoped(scopes)
    .CreateWithUser("user@your-domain.com"); // 替换为你的Workspace域内真实用户邮箱
var service = new PeopleServiceService(new BaseClientService.Initializer() { HttpClientInitializer = credential, });

var req = service.People.Connections.List("people/me");
req.PageSize = 2000;
req.RequestMaskIncludeField = "person.names";
req.Fields = "connections,totalItems,nextSyncToken";
var res = await req.ExecuteAsync();

// 先判空避免NullReferenceException
if (res.Connections != null)
{
    Console.WriteLine(res.Connections.Count);
}
else
{
    Console.WriteLine("未找到联系人或Connections为null");
}

4. 额外检查项

  • 确保你的Google Cloud项目已经启用了People API(可以在Cloud控制台的"API和服务 > 已启用的API和服务"中确认)
  • 如果模拟的用户本身没有任何联系人,res.Connections依然会是null,所以代码中的判空逻辑很有必要

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:18:41