Una vez que completes los pasos en Prepárate para usar la API de People, estarás listo para leer y administrar contactos.
En las siguientes muestras de código, se indica cómo enviar algunas solicitudes simples. Para ver una lista completa de métodos, consulta la documentación de referencia.
Obtén una lista de los contactos del usuario
Para obtener una lista de las personas en los contactos del usuario, usa el siguiente código:
Protocolo
GET /v1/people/me/connections?personFields=names,emailAddresses HTTP/1.1 Host: people.googleapis.com
Java
ListConnectionsResponse response = peopleService.people().connections().list("people/me") .setPersonFields("names,emailAddresses") .execute(); List<Person> people = response.getConnections();
Python
people = people_service.people().connections() .list('people/me', personFields='names,emailAddresses')
PHP
$people = $people_service->people_connections->listPeopleConnections( 'people/me', array('personFields' => 'names,emailAddresses'));
.NET
PeopleResource.ConnectionsResource.ListRequest peopleRequest = peopleService.People.Connections.List("people/me"); peopleRequest.PersonFields = "names,emailAddresses"; ListConnectionsResponse response = peopleRequest.Execute(); IList<Person> people = response.Connections;
Enumera los contactos del usuario que cambiaron
Java
// Initial request ListConnectionsResponse fullSyncResponse = peopleService.people().connections().list("people/me") .setPersonFields("metadata,names,emailAddresses") .setRequestSyncToken(true) .execute(); // Fetch all the pages while (fullSyncResponse.getNextPageToken() != null) { fullSyncResponse = peopleService.people().connections().list("people/me") .setPersonFields("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 { ListConnectionsResponse incrementalSyncResponse = peopleService.people().connections().list("people/me") .setPersonFields("metadata,names,emailAddresses") .setSyncToken(fullSyncResponse.getNextSyncToken()) .execute(); for (Person person : incrementalSyncResponse.getConnections()) { handlePerson(person); } // Fetch all the pages while (incrementalSyncResponse.getNextPageToken() != null) { incrementalSyncResponse = peopleService.people().connections().list("people/me") .setPersonFields("metadata,names,emailAddresses") .setSyncToken(fullSyncResponse.getNextSyncToken()) .setPageToken(incrementalSyncResponse.getNextPageToken()) .execute(); for (Person person : incrementalSyncResponse.getConnections()) { 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 } }
Obtén más detalles sobre el comportamiento de la sincronización en ListConnections.
Buscar en los contactos del usuario
Para buscar en todos los contactos del usuario, usa el siguiente código:
Protocolo
// Warmup cache GET /v1/people:searchContacts?query=&readMask=names,emailAddresses HTTP/1.1 Host: people.googleapis.com// Send search request after several seconds GET /v1/people:searchContacts?query=query&readMask=names,emailAddresses HTTP/1.1 Host: people.googleapis.com
Java
// Warmup cache SearchResponse response = peopleService.people().searchContacts() .setQuery("") .setReadMask("names,emailAddresses") .execute();// Wait a few seconds Thread.sleep(5);
// Send search request SearchResponse response = peopleService.people().searchContacts() .setQuery("query") .setReadMask("names,emailAddresses") .execute();
Crear un contacto nuevo
Para crear un contacto nuevo, usa el siguiente código:
Protocolo
POST /v1/people:createContact HTTP/1.1 Body: { "names": [{ "givenName": "John", "familyName": "Doe" }] } Host: people.googleapis.com
Java
Person contactToCreate = new Person(); List<Name> names = new ArrayList<>(); names.add(new Name().setGivenName("John").setFamilyName("Doe")); contactToCreate.setNames(names); Person createdContact = peopleService.people().createContact(contactToCreate).execute();
Uso de cuota por solicitud
- 1 solicitudes de lectura crítica (lecturas de contactos y perfiles)
- 1 solicitud de escritura crítica (creación de contactos y actualizaciones)
- 1 escritura diaria de contacto (total)
Actualizar un contacto existente
Si quieres actualizar un contacto existente, debes incluir el campo person.metadata.sources.etag
en la persona para que el contacto se actualice y asegúrate de que no haya cambiado desde tu última lectura. Usa el siguiente código:
Protocolo
PATCH /v1/resource_name:updateContact?updatePersonFields=emailAddresses HTTP/1.1 Body: { "resourceName": "resource_name", "etag": "etag", "emailAddresses": [{ "value": "john.doe@gmail.com" }], } Host: people.googleapis.com
Java
Person contactToUpdate = peopleService.people().get("resource_name").execute(); List<EmailAddress> emailAddresses = new ArrayList<>(); emailAddresses.add(new EmailAddress().setValue("john.doe@gmail.com")); contactToUpdate.setEmailAddresses(emailAddresses); Person updatedContact = peopleService.people() .updateContact(contactToUpdate.getResourceName(), contactToUpdate) .setUpdatePersonFields("emailAddresses") .execute();
Uso de cuota por solicitud
- 1 solicitudes de lectura crítica (lecturas de contactos y perfiles)
- 1 solicitud de escritura crítica (creación de contactos y actualizaciones)
- 1 escritura diaria de contacto (total)
Cómo borrar un contacto existente
Para borrar un contacto existente, usa el siguiente código:
Protocolo
DELETE /v1/resource_name:deleteContact HTTP/1.1 Host: people.googleapis.com
Java
peopleService.people().deleteContact("resource_name").execute();
Uso de cuota por solicitud
- 1 solicitud de escritura (eliminaciones de contactos y escrituras de grupos de contactos)
Crear contactos nuevos por lotes
Para crear contactos nuevos por lotes, usa el siguiente código:
Protocolo
POST /v1/people:batchCreateContacts?readMask=names HTTP/1.1 Body: { "contacts": [ { "contactPerson": { "names": [ { "givenName": "John", "familyName": "Doe" } ] } } ] } Host: people.googleapis.com
Java
Person person1 = new Person(); person1.setNames(ImmutableList.of(new Name().setGivenName("John").setFamilyName("Doe"))); ContactToCreate contactToCreate1 = new ContactToCreate(); contactToCreate1.setContactPerson(person1); Person person2 = new Person(); person2.setNames(ImmutableList.of(new Name().setGivenName("Bob").setFamilyName("Dylan"))); ContactToCreate contactToCreate2 = new ContactToCreate(); contactToCreate2.setContactPerson(person2); BatchCreateContactsRequest request = new BatchCreateContactsRequest(); request.setContacts(ImmutableList.of(contactToCreate1, contactToCreate2)).setReadMask("names"); BatchCreateContactsResponse response = peopleService.people().batchCreateContacts(request).execute();
Uso de cuota por solicitud
- 6 solicitudes de operaciones de lectura críticas (lecturas de contactos y perfiles)
- 6 solicitudes de escritura crítica (creación de contactos y actualizaciones)
- 200 operaciones de escritura de contactos diarias (total)
Actualizar por lotes los contactos existentes
Para actualizar un contacto existente, debes incluir el campo person.metadata.sources.etag
en cada persona a fin de que el contacto se actualice para asegurarte de que no haya cambiado desde tu última lectura. Usa el siguiente código:
Protocolo
POST /v1/people:batchUpdateContacts?updateMask=names&readMask=names,emailAddresses HTTP/1.1 Body: { "contacts": { "resource_name": { "emailAddresses": [ { "value": "john.doe@gmail.com" } ] "etag": "etag" } } } Host: people.googleapis.com
Java
Person contactToUpdate = peopleService.people().get("resource_name").execute(); contactToUpdate.setNames( ImmutableList.of(new Name().setGivenName("John").setFamilyName("Doe"))); BatchUpdateContactsRequest request = new BatchUpdateContactsRequest(); ImmutableMap<String, Person> map = ImmutableMap.of(contactToUpdate.getResourceName(), contactToUpdate); request.setContacts(map).setUpdateMask("names").setReadMask("names,emailAddresses"); BatchUpdateContactsResponse response = peopleService.people().batchUpdateContacts(request).execute();
Uso de cuota por solicitud
- 6 solicitudes de operaciones de lectura críticas (lecturas de contactos y perfiles)
- 6 solicitudes de escritura crítica (creación de contactos y actualizaciones)
- 200 operaciones de escritura de contactos diarias (total)
Borrar contactos existentes por lotes
Para borrar por lotes los contactos existentes, usa el siguiente código:
Protocolo
POST /v1/people:batchDeleteContacts HTTP/1.1 Body: {"resource_names": ["resource_name"]} Host: people.googleapis.com
Java
BatchDeleteContactsRequest request = new BatchDeleteContactsRequest(); request.setResourceNames(ImmutableList.of(resource_name)); peopleService.people().batchDeleteContacts(request).execute();
Uso de cuota por solicitud
- 10 solicitudes de escritura (eliminaciones de contactos y escrituras de grupos de contactos)