People.get 的 People api 没有获取其他用户的姓名、照片

Posted

技术标签:

【中文标题】People.get 的 People api 没有获取其他用户的姓名、照片【英文标题】:People api of People.get doesn't get names, photos for other user 【发布时间】:2021-10-28 21:37:12 【问题描述】:

尊敬的 Google People API 开发人员:

我正在使用https://developers.google.com/people/api/rest/v1/people/get api,但是使用resourceName="people/account_id" 无法获取其他用户的姓名、照片等信息。 但是当我使用resourceName="people/me"时,我可以获得我的姓名、照片等个人资料信息

web和flutter我也试过了,结果是一样的。


  "resourceName": "people/110971898718679553920",
  "etag": "%EgYBAgMuNz0aBAECBQc=",
  "photos": [
    
      "metadata": 
        "primary": true,
        "source": 
          "type": "PROFILE",
          "id": "110971898718679553920"
        
      ,
      "url": "https://lh3.googleusercontent.com/a-/AOh14GgB8WckrOhYHm-R_Y6hugAEu7XxQ-ktNsmzYUQW=s100",
      "default": true
    
  ]

我怎样才能得到这些信息?

我的代码示例如下

通过库调用人员 API

Future<Person> getPersonDetails(String peopleId) async 
    final GoogleAuthClient googleAuthClient =
        await GoogleProvider.provideGoogleAuthClient();

    final PeopleServiceApi peopleServiceApi =
        peopleDataProvider.getPeopleApi(googleAuthClient);

    Person person = await peopleServiceApi.people
        .get(peopleId, personFields: '(names,photos,urls,emailAddresses)');

    return person;
  

通过 HttpClient 调用 People API

Future<http.Response> getByPeopleAPI(String accountId) async 

  GoogleSignInAccount googleSignInAccount =
      await GoogleProvider.provideGoogleSignInAccount();

  GoogleSignInAuthentication googleSignInAuthentication =
      await googleSignInAccount.authentication;

  http.Client _client = http.Client();
  _client.get(
    Uri.parse(
        "https://people.googleapis.com/v1/$accountId?personFields=names,photos"),
    headers: <String, String>
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer $googleSignInAuthentication.accessToken',
    ,
  ).then((value) 
    print(value?.body.toString());
  );

注意:我从 google 活动 API 的 actor 属性中获得了 people/account_id。

期待您的支持和回复。

非常感谢您!

【问题讨论】:

这能回答你的问题吗? Method: people.get() does not return names 您是否启用了域范围委派? 【参考方案1】:

我在较新的 People API 的一些部分中也注意到了这一点。 people.listDirecory 端点似乎坏了。较旧的已弃用 olderContacts.list 效果更好,但已弃用。

奇怪的是people.searchDirectoryPeople 按预期工作并显示readMask 中的每个字段,但您需要提供搜索(显然没有通配符选项)。使用完全相同的readMask 调用people.listDirectoryPeople 会省略大多数字段。我不确定people.listDirectoryPeople 是否需要不同的范围或什么,但似乎记录的这个 api 肯定有问题 - 除非有人能指出我们在某处丢失的另一个文档?

【讨论】:

以上是关于People.get 的 People api 没有获取其他用户的姓名、照片的主要内容,如果未能解决你的问题,请参考以下文章

调用 google+ 方法 plusService.People.Get 时出错

集群中的分组/链接

Python字典 dict

如何检查Google用户的图片是默认图片还是上传图片?

react与jQuery对比,有空的时候再翻译一下

从 Swapi API https://swapi.co/api/people/ 获取数据