Чтение контактов и профилей домена

После выполнения шагов, описанных в разделе «Подготовка к использованию People API» , вы готовы читать контакты и профили каталога.

Следующие примеры кода демонстрируют, как отправить несколько простых запросов. Полный список методов смотрите в справочной документации .

Перечислите людей из каталога

Чтобы получить список контактов и профилей в каталоге домена пользователя , используйте следующий код:

GET /v1/people:listDirectoryPeople?sources=DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT&sources=DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE&readMask=names,emailAddresses HTTP/1.1
Host: people.googleapis.com
List<String> sources = new ArrayList<>();
sources
.add("DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT");
sources
.add("DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE");

ListDirectoryPeopleResponse response = peopleService.people().listDirectoryPeople()
   
.setSources(sources)
   
.setReadMask("metadata,names,emailAddresses")
   
.execute();

List<Person> people = response.getPeople();

Перечислите людей из каталога, которые изменились

Ява
// Initial request
List<String> sources = new ArrayList<>();
sources
.add("DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT");
sources
.add("DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE");

ListDirectoryPeopleResponse fullSyncResponse = peopleService.people().listDirectoryPeople()
   
.setSources(sources)
   
.setReadMask("metadata,names,emailAddresses")
   
.setRequestSyncToken(true)
   
.execute();
// Fetch all the pages
while (fullSyncResponse.getNextPageToken() != null) {
  fullSyncResponse
= peopleService.people().listDirectoryPeople()
     
.setSources(sources)
     
.setReadMask("metadata,names,emailAddresses")
     
.setRequestSyncToken(true)
     
.setPageToken(fullSyncResponse.getNextPageToken())
     
.execute();
}

// Some time passes

// Fetch incremental changes using the sync token returned in the last fullSyncResponse.
try {
 
ListDirectoryPeopleResponse incrementalSyncResponse = peopleService.people().listDirectoryPeople()
     
.setSources(sources)
     
.setReadMask("metadata,names,emailAddresses")
     
.setSyncToken(fullSyncResponse.getNextSyncToken())
     
.execute();
 
for (Person person : incrementalSyncResponse.getDirectoryPeople()) {
    handlePerson
(person);
 
}
 
 
// Fetch all the pages
 
while (incrementalSyncResponse.getNextPageToken() != null) {
    incrementalSyncResponse
= peopleService.people().listDirectoryPeople
       
.setSources(sources)
       
.setReadMask("metadata,names,emailAddresses")
       
.setSyncToken(fullSyncResponse.getNextSyncToken())
       
.setPageToken(incrementalSyncResponse.getNextPageToken())
       
.execute();
   
for (Person person : incrementalSyncResponse.getDirectoryPeople()) {
      handlePerson
(person);
   
}
 
}
} catch (GoogleJsonResponseException e) {
 
if (e.getStatusCode() == 410) {
   
// Sync token expired. Make full sync request.
 
}
}

void handlePerson(Person person) {
 
if (person.getMetadata().getDeleted()) {
   
// Handle deleted person
 
} else {
   
// Handle changed person
 
}
}

Более подробную информацию о поведении синхронизации можно найти в ListDirectory .

Поиск в каталоге людей

Чтобы получить список контактов и профилей в каталоге домена пользователя, соответствующий запросу префикса , используйте следующий код:

POST /v1/people:searchDirectoryPeople?query=John&sources=DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT&sources=DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE&readMask=names,emailAddresses HTTP/1.1
Host: people.googleapis.com
List
,

После выполнения шагов, описанных в разделе «Подготовка к использованию People API» , вы готовы читать контакты и профили каталога.

Следующие примеры кода демонстрируют, как отправить несколько простых запросов. Полный список методов смотрите в справочной документации .

Перечислите людей из каталога

Чтобы получить список контактов и профилей в каталоге домена пользователя , используйте следующий код:

GET /v1/people:listDirectoryPeople?sources=DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT&sources=DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE&readMask=names,emailAddresses HTTP/1.1
Host: people.googleapis.com
List<String> sources = new ArrayList<>();
sources
.add("DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT");
sources
.add("DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE");

ListDirectoryPeopleResponse response = peopleService.people().listDirectoryPeople()
   
.setSources(sources)
   
.setReadMask("metadata,names,emailAddresses")
   
.execute();

List<Person> people = response.getPeople();

Перечислите людей из каталога, которые изменились

Ява
// Initial request
List<String> sources = new ArrayList<>();
sources
.add("DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT");
sources
.add("DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE");

ListDirectoryPeopleResponse fullSyncResponse = peopleService.people().listDirectoryPeople()
   
.setSources(sources)
   
.setReadMask("metadata,names,emailAddresses")
   
.setRequestSyncToken(true)
   
.execute();
// Fetch all the pages
while (fullSyncResponse.getNextPageToken() != null) {
  fullSyncResponse
= peopleService.people().listDirectoryPeople()
     
.setSources(sources)
     
.setReadMask("metadata,names,emailAddresses")
     
.setRequestSyncToken(true)
     
.setPageToken(fullSyncResponse.getNextPageToken())
     
.execute();
}

// Some time passes

// Fetch incremental changes using the sync token returned in the last fullSyncResponse.
try {
 
ListDirectoryPeopleResponse incrementalSyncResponse = peopleService.people().listDirectoryPeople()
     
.setSources(sources)
     
.setReadMask("metadata,names,emailAddresses")
     
.setSyncToken(fullSyncResponse.getNextSyncToken())
     
.execute();
 
for (Person person : incrementalSyncResponse.getDirectoryPeople()) {
    handlePerson
(person);
 
}
 
 
// Fetch all the pages
 
while (incrementalSyncResponse.getNextPageToken() != null) {
    incrementalSyncResponse
= peopleService.people().listDirectoryPeople
       
.setSources(sources)
       
.setReadMask("metadata,names,emailAddresses")
       
.setSyncToken(fullSyncResponse.getNextSyncToken())
       
.setPageToken(incrementalSyncResponse.getNextPageToken())
       
.execute();
   
for (Person person : incrementalSyncResponse.getDirectoryPeople()) {
      handlePerson
(person);
   
}
 
}
} catch (GoogleJsonResponseException e) {
 
if (e.getStatusCode() == 410) {
   
// Sync token expired. Make full sync request.
 
}
}

void handlePerson(Person person) {
 
if (person.getMetadata().getDeleted()) {
   
// Handle deleted person
 
} else {
   
// Handle changed person
 
}
}

Более подробную информацию о поведении синхронизации можно найти в ListDirectory .

Поиск в каталоге людей

Чтобы получить список контактов и профилей в каталоге домена пользователя, соответствующий запросу префикса , используйте следующий код:

POST /v1/people:searchDirectoryPeople?query=John&sources=DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT&sources=DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE&readMask=names,emailAddresses HTTP/1.1
Host: people.googleapis.com
List