Este documento descreve como implementar o suporte a drives compartilhados no app usando a API Google Drive.
Os drives compartilhados seguem modelos diferentes de organização, compartilhamento e propriedade do Meu Drive. Se o app criar e gerenciar arquivos em drives compartilhados, você precisará implementar o suporte a drives compartilhados nele. A complexidade da implementação depende da funcionalidade do app.
Para começar, inclua o parâmetro de consulta supportsAllDrives=true nas solicitações quando o app realizar as seguintes operações:
API Drive v3
files.getfiles.listfiles.createfiles.updatefiles.copyfiles.deletechanges.listchanges.getStartPageTokenpermissions.listpermissions.getpermissions.createpermissions.updatepermissions.delete
API Drive v2
files.getfiles.listfiles.insertfiles.updatefiles.patchfiles.copyfiles.trashfiles.untrashfiles.deletefiles.touchchildren.insertparents.insertchanges.listchanges.getStartPageTokenchanges.getpermissions.listpermissions.getpermissions.insertpermissions.updatepermissions.patchpermissions.delete
O parâmetro supportsAllDrives=true informa ao Google Drive que o app foi projetado para processar arquivos em drives compartilhados.
Os apps que leem ou modificam permissões, rastreiam mudanças ou pesquisam em vários corpora exigem recursos adicionais de drives compartilhados. O restante deste documento destaca outras mudanças necessárias para realizar essas tarefas.
Pesquisar conteúdo em um drive compartilhado
Use o list método no files recurso para encontrar arquivos de usuários em drives compartilhados. Para
pesquisar um drive compartilhado, consulte Pesquisar drives
compartilhados.
O método list contém os seguintes parâmetros de consulta específicos do drive compartilhado:
driveId: ID do drive compartilhado a ser pesquisado.corpora: corpos de itens (arquivos ou documentos) a que a consulta se aplica. Os corpos aceitos sãouser,domain,driveeallDrives. PrefirauseroudriveaallDrivespara eficiência. Por padrão, os corpora são definidos comouser.includeItemsFromAllDrives: indica se os itens do Meu Drive e do drive compartilhado precisam ser incluídos nos resultados. Se não estiver presente ou definido como falso, os itens do drive compartilhado não serão retornados.supportsAllDrives: indica se o aplicativo solicitante oferece suporte ao Meu Drive e ao drive compartilhado. Se for falso, os itens do drive compartilhado não serão incluídos na resposta.
Os seguintes modos de consulta são específicos para drives compartilhados:
includeItemsFromAllDrives |
corpora |
Descrição da consulta |
|---|---|---|
true |
user |
Consulta arquivos que o usuário acessou, incluindo arquivos do drive compartilhado e do Meu Drive. |
true |
domain |
Consulta arquivos compartilhados com o domínio, incluindo arquivos do drive compartilhado e do Meu Drive. |
true |
drive |
Consulta todos os itens no drive compartilhado especificado. O driveId precisa ser especificado na solicitação. |
true |
allDrives |
Consulta arquivos que o usuário acessou e todos os drives compartilhados em que ele é membro. Observação: a resposta pode incluir incompleteSearch:true, indicando que alguns corpora não foram pesquisados para esta solicitação. |
Os exemplos de código a seguir mostram como pesquisar arquivos em todos os drives compartilhados e no Meu Drive:
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'
Substitua ACCESS_TOKEN pelo token OAuth 2.0 do seu app.
Acompanhar mudanças em um drive compartilhado
Use o list método no changes recurso para acompanhar as mudanças em um drive compartilhado. Para
mais informações, consulte Acompanhar mudanças para usuários e drives
compartilhados.
O método list contém os seguintes parâmetros de consulta específicos do drive compartilhado:
driveId: o drive compartilhado de que as mudanças são retornadas. Se especificado, os IDs de mudança se referem a mudanças nos itens dentro do drive compartilhado que fornece o estado atual de um arquivo. Para se referir a uma mudança específica do drive compartilhado, o ID do drive compartilhado e o ID da mudança precisam ser usados como identificadores.includeItemsFromAllDrives: indica se os arquivos ou mudanças do drive compartilhado precisam ser incluídos na lista de mudanças.supportsAllDrives: indica se o aplicativo solicitante oferece suporte a drives compartilhados. Se for falso, os itens do drive compartilhado, incluindo drives compartilhados e arquivos dentro de um drive compartilhado, não serão retornados.
Os seguintes modos de consulta são específicos para drives compartilhados:
includeItemsFromAllDrives |
driveId |
Descrição da consulta |
|---|---|---|
true |
Não | As mudanças refletem as mudanças nos arquivos dentro ou fora dos drives compartilhados que o usuário acessou, bem como as mudanças nos drives compartilhados em que o usuário é membro. |
true |
Sim | As mudanças refletem as mudanças no drive compartilhado especificado e nos itens dentro desse drive compartilhado. |
Os exemplos de código a seguir mostram como acompanhar as mudanças em um drive compartilhado:
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'
Substitua:
- SHARED_DRIVE_ID: o ID do drive compartilhado.
- ACCESS_TOKEN: o token OAuth 2.0 do seu app.
- START_PAGE_TOKEN: o token da página inicial do drive compartilhado.
Substitua SHARED_DRIVE_ID pelo ID do drive compartilhado.
Ativar o suporte a drives compartilhados na interface do Drive
Para acessar o conteúdo do drive compartilhado usando a interface do Drive, certifique-se de que você marcou a caixa Suporte a drives compartilhados na guia Integração da interface do Drive da API Google Drive no console do Google Cloud. Para mais informações, consulte Configurar uma integração da interface do Drive.
Usar o Google Picker com drives compartilhados
O Google Picker oferece suporte à seleção de itens em drives compartilhados. Para mais detalhes sobre como ativar o suporte a drives compartilhados e adicionar visualizações de drives compartilhados no Picker, consulte a API Google Picker.