Google People API: пусто при перечислении соединений - PullRequest
0 голосов
/ 19 октября 2019

При использовании Google.Apis.PeopleService.v1 метод people.connections.list, кажется, работает (без исключений), но для возвращаемого объекта все его поля имеют нулевое значение. Вот соответствующий код:

var scopes = new[] { PeopleServiceService.Scope.ContactsReadonly, PeopleServiceService.ScopeConstants.Contacts };
var credential = GoogleCredential.FromFile("./my-secrets.json")
                                 .CreateScoped(scopes);
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();
Console.WriteLine(res.Connections.Count); // <-- NullReferenceException

my-secrets.json - это файл секретов, загруженный с console.developers.google.com. Это выглядит так:

{
  "type": "service_account",
  "project_id": "",
  "private_key_id": "",
  "private_key": "",
  "client_email": "",
  "client_id": "",
  "auth_uri": "",
  "token_uri": "",
  "auth_provider_x509_cert_url": "",
  "client_x509_cert_url": ""
}

Кто-то знает, что мне не хватает?

1 Ответ

0 голосов
/ 21 октября 2019

Для PeopleService API требуются учетные данные пользователя, а не учетные данные службы.

В локально установленном приложении (например, консольном приложении) введите GoogleWebAuthorizationBroker.AuthorizeAsync(...), чтобы получить один из них.

Запрос должен установить req.PersonFields, как описано здесь: https://developers.google.com/people/api/rest/v1/people.connections/list#query-parameters Например, req.PersonFields = "emailAddresses";

Нет необходимости устанавливать req.Fields или req.RequestMaskIncludeField.

...