قراءة جهات اتصال النطاق والملفات الشخصية

بعد إكمال الخطوات الواردة في مقالة الاستعداد لاستخدام 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

Java

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();

إدراج المستخدمين الذين تغيّرت بياناتهم في الدليل

Java

// 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

Java

List sources = new ArrayList<>();
sources.add("DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT");
sources.add("DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE");

SearchDirectoryPeopleResponse response = peopleService.people().searchDirectoryPeople()
    .setQuery("John")
    .setSources(sources)
    .setReadMask("metadata,names,emailAddresses")
    .execute();

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