En este documento, se describe cómo implementar la compatibilidad con unidades compartidas en tu app con la API de Google Drive.
Las unidades compartidas siguen diferentes modelos de organización, uso compartido y propiedad que Mi unidad. Si tu app creará y administrará archivos en unidades compartidas, debes implementar la compatibilidad con unidades compartidas en tu app. La complejidad de tu implementación depende de la funcionalidad de tu app.
Para comenzar, debes incluir el parámetro de consulta supportsAllDrives=true en tus solicitudes cuando tu app realice las siguientes operaciones:
API de Drive v3
files.getfiles.listfiles.createfiles.updatefiles.copyfiles.deletechanges.listchanges.getStartPageTokenpermissions.listpermissions.getpermissions.createpermissions.updatepermissions.delete
API de Drive v2
files.getfiles.listfiles.insertfiles.updatefiles.patchfiles.copyfiles.trashfiles.untrashfiles.deletefiles.touchchildren.insertparents.insertchanges.listchanges.getStartPageTokenchanges.getpermissions.listpermissions.getpermissions.insertpermissions.updatepermissions.patchpermissions.delete
El parámetro supportsAllDrives=true informa a Google Drive que tu app está diseñada para controlar archivos en unidades compartidas.
Las apps que leen o modifican permisos, realizan un seguimiento de los cambios o buscan en varios corpus requieren capacidades adicionales de unidades compartidas. En el resto de este documento, se destacan los cambios adicionales necesarios para realizar estas tareas.
Cómo buscar contenido en una unidad compartida
Usa el list método en el files recurso para encontrar archivos de usuario en unidades compartidas. Para
buscar una unidad compartida, consulta Cómo buscar unidades
compartidas.
El método list contiene los siguientes parámetros de consulta específicos de la unidad compartida:
driveId: Es el ID de la unidad compartida que se buscará.corpora: Son los cuerpos de los elementos (archivos o documentos) a los que se aplica la consulta. Los cuerpos admitidos sonuser,domain,driveyallDrives. PrefiereuserodriveaallDrivespara lograr eficiencia. De forma predeterminada, el corpus se establece enuser.includeItemsFromAllDrives: Indica si se deben incluir elementos de Mi unidad y de unidades compartidas en los resultados. Si no está presente o se establece como falso, no se muestran los elementos de la unidad compartida.supportsAllDrives: Indica si la aplicación solicitante admite Mi unidad y la unidad compartida. Si es falso, los elementos de la unidad compartida no se incluyen en la respuesta.
Los siguientes modos de consulta son específicos de las unidades compartidas:
includeItemsFromAllDrives |
corpora |
Descripción de la consulta |
|---|---|---|
true |
user |
Consulta los archivos a los que accedió el usuario, incluidos los archivos de la unidad compartida y de Mi unidad. |
true |
domain |
Consulta los archivos que se comparten con el dominio, incluidos los archivos de la unidad compartida y de Mi unidad. |
true |
drive |
Consulta todos los elementos de la unidad compartida especificada. El driveId debe especificarse en la solicitud. |
true |
allDrives |
Consulta los archivos a los que accedió el usuario y todas las unidades compartidas de las que es miembro. Ten en cuenta que la respuesta puede incluir incompleteSearch:true, lo que indica que no se buscaron algunos corpus para esta solicitud. |
En los siguientes ejemplos de código, se muestra cómo buscar archivos en todas las unidades compartidas y en Mi unidad:
Python
files = []
page_token = None
while True:
response = drive_service.files().list(
q="mimeType='application/vnd.google-apps.folder'",
spaces='drive',
corpora='allDrives',
supportsAllDrives=True,
includeItemsFromAllDrives=True,
fields='nextPageToken, files(id, name)',
pageToken=page_token
).execute()
files.extend(response.get('files', []))
page_token = response.get('nextPageToken', None)
if not page_token:
break
Node.js
let files = [];
let pageToken = null;
do {
const response = await drive_service.files.list({
q: "mimeType='application/vnd.google-apps.folder'",
spaces: 'drive',
corpora: 'allDrives',
supportsAllDrives: true,
includeItemsFromAllDrives: true,
fields: 'nextPageToken, files(id, name)',
pageToken: pageToken
});
files = files.concat(response.data.files);
pageToken = response.data.nextPageToken;
} while (pageToken);
Java
List<File> files = new ArrayList<>();
String pageToken = null;
do {
FileList result = driveService.files().list()
.setQ("mimeType='application/vnd.google-apps.folder'")
.setSpaces("drive")
.setCorpora("allDrives")
.setSupportsAllDrives(true)
.setIncludeItemsFromAllDrives(true)
.setFields("nextPageToken, files(id, name)")
.setPageToken(pageToken)
.execute();
files.addAll(result.getFiles());
pageToken = result.getNextPageToken();
} while (pageToken != null);
curl
curl -X GET \
'https://www.googleapis.com/drive/v3/files?corpora=allDrives&includeItemsFromAllDrives=true&supportsAllDrives=true&fields=nextPageToken%2Cfiles(id%2Cname)' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
Reemplaza ACCESS_TOKEN por el token de OAuth 2.0 de tu app.
Cómo realizar un seguimiento de los cambios en una unidad compartida
Usa el list método en el changes recurso para realizar un seguimiento de los cambios en una unidad compartida. Para
obtener más información, consulta Realiza un seguimiento de los cambios para los usuarios y las unidades
compartidas.
El método list contiene los siguientes parámetros de consulta específicos de la unidad compartida:
driveId: Es la unidad compartida de la que se muestran los cambios. Si se especifica, los IDs de cambio hacen referencia a los cambios en los elementos dentro de la unidad compartida que proporciona el estado actual de un archivo. Para hacer referencia a un cambio específico de la unidad compartida, se deben usar el ID de la unidad compartida y el ID de cambio como identificador.includeItemsFromAllDrives: Indica si los archivos o los cambios de la unidad compartida deben incluirse en la lista de cambios.supportsAllDrives: Indica si la aplicación solicitante admite unidades compartidas. Si es falso, no se muestran los elementos de la unidad compartida, incluidas las unidades compartidas y los archivos dentro de una unidad compartida.
Los siguientes modos de consulta son específicos de las unidades compartidas:
includeItemsFromAllDrives |
driveId |
Descripción de la consulta |
|---|---|---|
true |
No | Los cambios reflejan los cambios en los archivos dentro o fuera de las unidades compartidas a las que accedió el usuario, así como los cambios en las unidades compartidas de las que es miembro. |
true |
Sí | Los cambios reflejan los cambios en la unidad compartida específica que se especificó y los elementos dentro de esa unidad compartida. |
En los siguientes ejemplos de código, se muestra cómo realizar un seguimiento de los cambios en una unidad compartida:
Python
# 1. Get the start page token for the shared drive.
response = drive_service.changes().getStartPageToken(
supportsAllDrives=True,
driveId='SHARED_DRIVE_ID'
).execute()
start_page_token = response.get('startPageToken')
# 2. List changes starting from the page token.
response = drive_service.changes().list(
pageToken=start_page_token,
supportsAllDrives=True,
includeItemsFromAllDrives=True,
driveId='SHARED_DRIVE_ID'
).execute()
changes = response.get('changes', [])
Node.js
// 1. Get the start page token for the shared drive.
const tokenResponse = await drive_service.changes.getStartPageToken({
supportsAllDrives: true,
driveId: 'SHARED_DRIVE_ID'
});
const startPageToken = tokenResponse.data.startPageToken;
// 2. List changes starting from the page token.
const response = await drive_service.changes.list({
pageToken: startPageToken,
supportsAllDrives: true,
includeItemsFromAllDrives: true,
driveId: 'SHARED_DRIVE_ID'
});
const changes = response.data.changes;
Java
// 1. Get the start page token for the shared drive.
StartPageToken tokenResult = driveService.changes().getStartPageToken()
.setSupportsAllDrives(true)
.setDriveId("SHARED_DRIVE_ID")
.execute();
String startPageToken = tokenResult.getStartPageToken();
// 2. List changes starting from the page token.
ChangeList changesResult = driveService.changes().list(startPageToken)
.setSupportsAllDrives(true)
.setIncludeItemsFromAllDrives(true)
.setDriveId("SHARED_DRIVE_ID")
.execute();
List<Change> changes = changesResult.getChanges();
curl
# 1. Get the start page token for the shared drive.
curl -X GET \
'https://www.googleapis.com/drive/v3/changes/startPageToken?supportsAllDrives=true&driveId=SHARED_DRIVE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
# 2. List changes starting from the page token.
curl -X GET \
'https://www.googleapis.com/drive/v3/changes?pageToken=START_PAGE_TOKEN&supportsAllDrives=true&includeItemsFromAllDrives=true&driveId=SHARED_DRIVE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
Reemplaza lo siguiente:
- SHARED_DRIVE_ID: Es el ID de la unidad compartida.
- ACCESS_TOKEN: Es el token de OAuth 2.0 de tu app.
- START_PAGE_TOKEN: Es el token de la página de inicio de la unidad compartida.
Reemplaza SHARED_DRIVE_ID por el ID de la unidad compartida.
Cómo habilitar la compatibilidad con unidades compartidas en la IU de Drive
Para acceder al contenido de la unidad compartida con la IU de Drive, asegúrate de que has marcado la casilla Compatibilidad con unidades compartidas en la pestaña Integración de la IU de Drive de la API de Google Drive en la consola de Google Cloud. Para obtener más información, consulta Cómo configurar una integración de la IU de Drive.
Cómo usar Google Picker con unidades compartidas
El Google Picker admite la selección de elementos en unidades compartidas. Para obtener detalles sobre cómo habilitar la compatibilidad con unidades compartidas y agregar vistas de unidades compartidas en el selector, consulta la API de Google Picker.