A ogni file, cartella e Drive condiviso di Google Drive sono associate risorse
permissions
. Ogni risorsa identifica l'autorizzazione per un type
(user
, group
, domain
,
anyone
) e un role
(owner
, organizer
, fileOrganizer
, writer
,
commenter
, reader
) specifici. Ad esempio, un file potrebbe avere un'autorizzazione che concede a un
utente specifico (type=user
) l'accesso di sola lettura (role=reader
), mentre un'altra
autorizzazione concede ai membri di un gruppo specifico (type=group
) la possibilità di aggiungere
commenti a un file (role=commenter
).
Per un elenco completo dei ruoli e delle operazioni consentite da ciascuno, consulta Ruoli e autorizzazioni.
Scenari per la condivisione delle risorse di Drive
Esistono cinque diversi tipi di scenari di condivisione:
Per condividere un file in Il mio Drive, l'utente deve disporre del ruolo
role=writer
orole=owner
.Se il valore booleano
writersCanShare
è impostato sufalse
per il file, l'utente deve avererole=owner
.Se l'utente con
role=writer
ha accesso temporaneo regolato da una data e un'ora di scadenza, non può condividere il file. Per ulteriori informazioni, consulta Impostare una data di scadenza per limitare l'accesso ai file.
Per condividere una cartella in Il mio Drive, l'utente deve avere
role=writer
orole=owner
.Se il valore booleano
writersCanShare
è impostato sufalse
per il file, l'utente deve disporre del valorerole=owner
più permissivo.L'accesso temporaneo (regolato da una data e un'ora di scadenza) non è consentito nelle cartelle Il mio Drive con
role=writer
. Per ulteriori informazioni, consulta la sezione Impostare una data di scadenza per limitare l'accesso ai file.
Per condividere un file in un Drive condiviso, l'utente deve disporre del ruolo
role=writer
,role=fileOrganizer
orole=organizer
.- L'impostazione
writersCanShare
non si applica agli elementi dei Drive condivisi. Viene trattato come se fosse sempre impostato sutrue
.
- L'impostazione
Per condividere una cartella in un Drive condiviso, l'utente deve disporre del ruolo
role=organizer
.- Se la limitazione
sharingFoldersRequiresOrganizerPermission
su un Drive condiviso è impostata sufalse
, gli utenti conrole=fileOrganizer
possono condividere le cartelle al suo interno.
- Se la limitazione
Per gestire l'appartenenza a un Drive condiviso, l'utente deve disporre del ruolo
role=organizer
. Solo gli utenti e i gruppi possono essere membri dei Drive condivisi.
Impostare una data di scadenza per limitare l'accesso ai file
Quando collabori con altre persone a un progetto sensibile, potresti voler limitare il loro accesso a determinati file su Drive dopo un determinato periodo di tempo. Puoi farlo impostando una data di scadenza per limitare o rimuovere l'accesso a un file specifico su Il mio Drive.
Per impostare la data di scadenza:
Utilizza il metodo
create()
sulla risorsapermissions
e imposta il campoexpirationTime
insieme agli altri campi obbligatori. Per ulteriori informazioni, consulta la sezione Creare un'autorizzazione.Utilizza il metodo
update()
sulla risorsapermissions
e imposta il campoexpirationTime
(insieme agli altri campi obbligatori). Per ulteriori informazioni, consulta Modificare le autorizzazioni.
Il campo expirationTime
indica la data di scadenza dell'autorizzazione utilizzando il formato RFC 3339
data-ora. I periodi di scadenza sono soggetti alle seguenti limitazioni:
- Possono essere impostati solo sulle autorizzazioni utente e gruppo.
- L'ora deve essere futura.
- L'ora non può essere successiva a quella corrente di più di un anno.
Per ulteriori informazioni sulla data di scadenza, leggi i seguenti articoli:
Propagazione delle autorizzazioni
Gli elenchi di autorizzazioni per una cartella si propagano verso il basso e tutti i file e le cartelle secondari ereditano le autorizzazioni dalla cartella principale. Ogni volta che le autorizzazioni o la gerarchia vengono modificate, la propagazione avviene in modo ricorsivo in tutte le cartelle nidificate. Ad esempio, se un file esiste in una cartella e questa viene spostata in un'altra cartella, le autorizzazioni della nuova cartella vengono propagate al file. Se la nuova cartella concede all'utente del file un nuovo ruolo, ad esempio "autore", il nuovo ruolo overriderà il vecchio.
Al contrario, se un file eredita role=writer
da una cartella e viene spostato in un'altra cartella che fornisce il ruolo "Lettore", il file eredita role=reader
.
Le autorizzazioni ereditate non possono essere rimosse da un file o una cartella in un Drive condiviso. Queste autorizzazioni devono invece essere regolate sull'elemento principale diretto o indiretto da cui sono state ereditate. Le autorizzazioni ereditate possono essere rimosse dagli elementi in "Il mio Drive" o "Condivisi con me".
Al contrario, le autorizzazioni ereditate possono essere sostituite su un file o una cartella in Il mio
Drive. Pertanto, se un file eredita role=writer
da una cartella del mio Drive, puoi impostare role=reader
sul file per abbassarne il livello di autorizzazione.
Funzionalità
La risorsa permissions
non determina in ultima analisi la capacità dell'utente corrente di eseguire azioni su un file o una cartella. La risorsa files
contiene invece una raccolta di campi capabilities
booleani utilizzati per indicare se un'azione può essere eseguita su un file o una cartella. L'API Google Drive imposta questi campi in base alla risorsa delle autorizzazioni dell'utente corrente associata al file o alla cartella.
Ad esempio, quando Alex accede alla tua app e tenta di condividere un file, viene controllato se il suo ruolo ha autorizzazioni per il file. Se il ruolo consente di condividere un file,
i capabilities
relativi al file, ad esempio canShare
, vengono compilati
in base al ruolo. Se Alex vuole condividere il file, la tua app controlla il valore di capabilities
per assicurarsi che canShare
sia impostato su true
.
Per un esempio di recupero del file capabilities
, consulta Verificare le autorizzazioni
dell'utente.
Creare un'autorizzazione
I seguenti due campi sono necessari per creare un'autorizzazione:
type
: il caratteretype
identifica l'ambito della autorizzazione (user
,group
,domain
oanyone
). Un'autorizzazione contype=user
si applica a un utente specifico, mentre un'autorizzazione contype=domain
si applica a tutti gli utenti di un dominio specifico.role
: il camporole
identifica le operazioni chetype
può eseguire. Ad esempio, un'autorizzazione contype=user
erole=reader
concede a un utente specifico l'accesso di sola lettura al file o alla cartella. In alternativa, un'autorizzazione contype=domain
erole=commenter
consente a tutti gli utenti del dominio di aggiungere commenti a un file. Per un elenco completo dei ruoli e delle operazioni consentite da ciascuno, consulta Ruoli e autorizzazioni.
Quando crei un'autorizzazione in cui type=user
o type=group
, devi anche fornire un emailAddress
per associare l'utente o il gruppo specifico all'autorizzazione.
Quando crei un'autorizzazione in cui type=domain
, devi anche fornire un valore domain
per associare un dominio specifico all'autorizzazione.
Per creare un'autorizzazione:
- Utilizza il metodo
create()
con il parametro di percorsofileId
per il file o la cartella associato. - Nel corpo della richiesta, specifica
type
erole
. - Se
type=user
otype=group
, fornisci unemailAddress
. Setype=domain
, fornisci undomain
.
Mostra un esempio
Il seguente esempio di codice mostra come creare una autorizzazione. La risposta restituisce un'istanza di una risorsa Permission
, incluso l'attributo permissionId
assegnato.
Richiedi
POST https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
{ "requests": [ { "type": "user", "role": "commenter", "emailAddress": "alex@altostrat.com" } ] }
Risposta
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
Utilizzare i segmenti di pubblico di destinazione
I segmenti di pubblico di destinazione sono gruppi di persone, ad esempio reparti o team, che puoi consigliare agli utenti per la condivisione dei propri elementi. Puoi incoraggiare gli utenti a condividere gli elementi con un pubblico più specifico o circoscritto anziché con l'intera organizzazione. I segmenti di pubblico di destinazione possono aiutarti a migliorare la sicurezza e la privacy dei tuoi dati e semplificare la condivisione da parte degli utenti in modo appropriato. Per ulteriori informazioni, consulta Informazioni sui segmenti di pubblico di destinazione.
Per utilizzare i segmenti di pubblico di destinazione:
Nella Console di amministrazione Google, vai a Menu > Directory > Segmenti di pubblico di destinazione.
Vai a Segmenti di pubblico di destinazione
Per questa attività devi aver eseguito l'accesso utilizzando un account con privilegi di super amministratore.
Nell'elenco Segmenti di pubblico di destinazione, fai clic sul nome del pubblico di destinazione. Per creare un pubblico di destinazione, consulta Creare un pubblico di destinazione
Copia l'ID univoco dall'URL del pubblico di destinazione:
https://admin.google.com/ac/targetaudiences/ID
.Crea un'autorizzazione con
type=domain
e imposta il campodomain
suID.audience.googledomains.com
.
Per visualizzare il modo in cui gli utenti interagiscono con i segmenti di pubblico di destinazione, consulta Esperienza utente per la condivisione tramite link.
Recuperare tutte le autorizzazioni per un file, una cartella o un Drive condiviso
Utilizza il metodo list()
nella risorsa
permissions
per recuperare tutte le autorizzazioni per un file, una cartella o un Drive condiviso.
Mostra un esempio
Il seguente esempio di codice mostra come ottenere tutte le autorizzazioni. La risposta restituisce un elenco di autorizzazioni.
Richiedi
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
Risposta
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
Verificare le autorizzazioni dell'utente
Quando l'app apre un file, deve verificare le relative funzionalità e visualizzare l'interfaccia utente in modo che rifletta le autorizzazioni dell'utente corrente. Ad esempio, se l'utente
non dispone di una funzionalità canComment
per il file, la possibilità di aggiungere commenti
dovrebbe essere disattivata nell'interfaccia utente.
Per ulteriori informazioni su capabilities
, consulta la sezione Funzionalità.
Per controllare le funzionalità, chiama il metodo get()
nella risorsa files
con il parametro fileId
del percorso e il parametro fields
impostato sul campo capabilities
. Per maggiori informazioni sui campi restituiti utilizzando il parametro fields
, consulta Restituire campi specifici per un file.
Mostra un esempio
Il seguente esempio di codice mostra come verificare le autorizzazioni utente. La risposta restituisce un elenco delle funzionalità di cui l'utente dispone sul file. Ogni funzionalità corrisponde a un'azione granulare che un utente può eseguire. Alcuni campi vengono compilati solo per gli elementi dei Drive condivisi.
Richiedi
GET https://www.googleapis.com/drive/v3/files/FILE_ID
?fields=capabilities
Risposta
{ "capabilities": { "canAcceptOwnership": false, "canAddChildren": false, "canAddMyDriveParent": false, "canChangeCopyRequiresWriterPermission": true, "canChangeSecurityUpdateEnabled": false, "canComment": true, "canCopy": true, "canDelete": true, "canDownload": true, "canEdit": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": false, "canRemoveMyDriveParent": true, "canRename": true, "canShare": true, "canTrash": true, "canUntrash": true } }
Determinare l'origine del ruolo per i file e le cartelle dei Drive condivisi
Per modificare il ruolo di un file o di una cartella, devi conoscere la relativa origine. Per i Drive condivisi, l'origine di un ruolo può essere basata sull'appartenenza al Drive condiviso, sul ruolo in una cartella o sul ruolo in un file.
Per determinare l'origine del ruolo per un Drive condiviso o per gli elementi al suo interno, chiama il metodo get()
sulla risorsa permissions
con i parametri di percorso fileId
e permissionId
e il parametro fields
impostato sul campo permissionDetails
.
Per trovare permissionId
, utilizza il metodo
list()
sulla risorsa permissions
con il parametro di percorso fileId
. Per recuperare il campo permissionDetails
nella richiesta list
, imposta il parametro fields
su
permissions/permissionDetails
.
Questo campo elenca tutte le autorizzazioni di file ereditate e dirette per l'utente, il gruppo o il dominio.
Mostra un esempio
Il seguente esempio di codice mostra come determinare l'origine del ruolo. La risposta restituisce il permissionDetails
di una risorsa permissions
. Il campo inheritedFrom
fornisce l'ID dell'elemento da cui viene ereditata l'autorizzazione.
Richiedi
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
?fields=permissionDetails&supportsAllDrives=true
Risposta
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID
",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}
Modifica autorizzazioni
Per modificare le autorizzazioni di un file o di una cartella, puoi modificare il ruolo assegnato:
Chiama il metodo
update()
sulla risorsapermissions
con il parametro di percorsopermissionId
impostato sull'autorizzazione da modificare e il parametro di percorsofileId
impostato sul file, sulla cartella o sul Drive condiviso associato. Per trovarepermissionId
, utilizza il metodolist()
sulla risorsapermissions
con il parametro di percorsofileId
.Nella richiesta, identifica il nuovo
role
.
Puoi concedere autorizzazioni per singoli file o cartelle in un Drive condiviso anche se l'utente o il gruppo è già un membro. Ad esempio, Alex ha role=commenter
come parte della sua appartenenza a un Drive condiviso. Tuttavia, la tua app può concedere ad Alexrole=writer
l'accesso a un file in un Drive condiviso. In questo caso, poiché il nuovo ruolo è più permissivo del ruolo concesso tramite l'appartenenza, la nuova autorizzazione diventa il ruolo effettivo per il file o la cartella.
Mostra un esempio
Il seguente esempio di codice mostra come modificare le autorizzazioni per un file o una cartella da utente che può aggiungere commenti a utente che può scrivere. La risposta restituisce un'istanza di una risorsa permissions
.
Richiedi
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "role": "writer" } ] }
Risposta
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "writer"
}
Elenca e risolvi le proposte di accesso in attesa
Una proposta di accesso è una proposta di un richiedente a un approvatore per concedere a un destinatario l'accesso a un elemento di Drive.
Un approvatore può esaminare e intervenire su tutte le proposte di accesso non risolte nei file di Drive. Ciò significa che puoi velocizzare la procedura di approvazione con una query programmatica per le proposte di accesso e poi risolverle. Inoltre, consente a un approvatore di visualizzare le proposte in forma aggregata.
L'API Drive fornisce la risorsa
accessproposals
in modo da poter visualizzare e risolvere le proposte di accesso in attesa. I metodi della risorsaaccessproposals
funzionano su file, cartelle e file all'interno di un Drive condiviso, ma non sul Drive condiviso.
I seguenti termini sono specifici per le proposte di accesso:
- Richiedente: l'utente che avvia la proposta di accesso a un elemento di Drive.
- Destinatario: l'utente che riceve le autorizzazioni aggiuntive su un file se la proposta di accesso viene concessa. Spesso il destinatario corrisponde all'autore della richiesta, ma non sempre.
- Approvatore: l'utente responsabile dell'approvazione (o del rifiuto) della proposta di accesso. In genere, questo accade perché sono proprietari del documento o hanno la possibilità di condividerlo.
Elenca le proposte di accesso in attesa
Per elencare tutte le proposte di accesso in attesa per un elemento di Drive, chiama il metodo
list()
sulla
risorsa accessproposals
e includi il parametro di percorso fileId
.
Solo gli approvatori di un file possono elencare le proposte in attesa in un file. Un approvatore è un utente con la funzionalità can_approve_access_proposals
per il file. Se il richiedente non è un approvatore, viene restituito un elenco vuoto. Per ulteriori informazioni su capabilities
, consulta la sezione Funzionalità.
Il corpo
della risposta
è costituito da un
oggetto
AccessProposal
che rappresenta un elenco di proposte di accesso irrisolte nel file.
L'oggetto AccessProposal
include informazioni su ogni proposta, ad esempio il richiedente, il destinatario e il messaggio aggiunto dal richiedente. Inoltre, include un oggetto AccessProposalRoleAndView
che raggruppa il role
proposto dal richiedente con un view
. Poiché role
è un campo ripetuto, potrebbero esistere più valori per ogni proposta. Ad esempio, una proposta potrebbe avere un oggetto AccessProposalRoleAndView
di role=reader
e
view=published
, oltre a un altro oggetto AccessProposalRoleAndView
con
solo il valore role=writer
. Per ulteriori informazioni, consulta la sezione Visualizzazioni.
Passa i seguenti parametri di query per personalizzare la paginazione o filtrare le proposte di accesso:
pageToken
: un token di pagina ricevuto da una precedente chiamata dell'elenco. Fornisci questo token per recuperare la pagina successiva.pageSize
: il numero massimo di proposte di accesso da restituire per pagina.
Risolvere le proposte di accesso in attesa
Per risolvere tutte le proposte di accesso in attesa su un elemento di Drive, chiama il metodo resolve()
sulla risorsa accessproposals
e includi i parametri di percorso fileId
e proposalId
.
Il metodo resolve()
include un parametro di query action
che indica l'azione da intraprendere in merito alla proposta. L'oggetto
Action
monitora la modifica dello stato della proposta, in modo da sapere se viene accettata
o rifiutata.
Il metodo resolve()
include anche i parametri di query facoltativi role
e
view
. Gli unici ruoli supportati sono writer
, commenter
e reader
. Se il ruolo non è specificato, il valore predefinito è reader
. Un ulteriore parametro di query facoltativosend_notification
ti consente di inviare una notifica via email all'autore della richiesta quando la proposta viene accettata o rifiutata.
Come per il metodo list()
, gli utenti che risolvono la proposta devono disporre della funzionalità can_approve_access_proposals
sul file. Per ulteriori informazioni su capabilities
, consulta la sezione Funzionalità.
Le proposte vengono risolte utilizzando gli stessi pattern elencati nella sezione Scenari per la condivisione delle risorse di Drive. Se sono presenti più proposte per lo stesso utente, ma con ruoli diversi, si applica quanto segue:
- Se una proposta viene accettata e l'altra rifiutata, il ruolo accettato viene applicato all'elemento Drive.
- Se entrambe le proposte vengono accettate contemporaneamente, viene applicata la proposta con l'autorizzazione più elevata (ad esempio
role=writer
rispetto arole=reader
). L'altra proposta di accesso viene rimossa dall'articolo.
Dopo aver inviato una proposta al metodo resolve()
, l'azione di condivisione è completata. AccessProposal
non viene più restituito tramite il metodo list()
. Una volta accettata la proposta, l'utente deve utilizzare la raccolta
permissions
per aggiornare
le autorizzazioni su un file o una cartella. Per ulteriori informazioni, consulta la sezione Modificare le autorizzazioni.
Revocare l'accesso a un file o a una cartella
Per revocare l'accesso a un file o a una cartella, chiama il metodo
delete()
sulla risorsa
permissions
con i parametri di percorso
fileId
e permissionId
impostati per eliminare l'autorizzazione.
Per gli elementi in "Il mio Drive", è possibile eliminare un'autorizzazione ereditata. L'eliminazione di un'autorizzazione ereditata comporta la revoca dell'accesso all'elemento e agli eventuali elementi secondari.
Per gli elementi di un Drive condiviso, le autorizzazioni ereditate non possono essere revocate. Aggiorna o revoca l'autorizzazione sul file o sulla cartella principale.
Il metodo delete()
viene utilizzato anche per eliminare le autorizzazioni applicate direttamente a un file o a una cartella di un Drive condiviso.
Mostra un esempio
Il seguente esempio di codice mostra come revocare l'accesso eliminando un permissionId
. In caso di esito positivo, il corpo della risposta è vuoto. Per verificare che l'autorizzazione sia stata rimossa, utilizza il metodo list()
sulla risorsa permissions
con il parametro di percorso fileId
.
Richiedi
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
Trasferire la proprietà di un file a un altro account Google Workspace della stessa organizzazione
La proprietà dei file esistenti in "Il mio Drive" può essere trasferita da un account Google Workspace a un altro account della stessa organizzazione. Un'organizzazione che possiede un Drive condiviso è proprietaria dei file al suo interno. Pertanto, i trasferimenti di proprietà non sono supportati per i file e le cartelle dei Drive condivisi. Gli organizzatori di un Drive condiviso possono spostare gli elementi da quel Drive condiviso nel proprio "Il mio Drive", trasferendo così la proprietà a loro.
Per trasferire la proprietà di un file in "Il mio Drive", svolgi una delle seguenti operazioni:
Crea un'autorizzazione file che conceda a un utente specifico (
type=user
) l'accesso come proprietario (role=owner
).Aggiorna l'autorizzazione di un file esistente con
role=owner
e trasferisci la proprietà all'utente specificato (transferOwnership=true
).
Trasferire la proprietà di un file da un account consumer a un altro
La proprietà dei file può essere trasferita da un account consumer a un altro. Tuttavia, Drive non trasferisce la proprietà di un file tra i due account consumer finché il potenziale proprietario non acconsente esplicitamente al trasferimento. Per trasferire la proprietà di un file da un account consumer a un altro:
Il proprietario corrente avvia un trasferimento di proprietà creando o aggiornando l'autorizzazione del file del potenziale proprietario. L'autorizzazione deve includere queste impostazioni:
role=writer
,type=user
ependingOwner=true
. Se il proprietario corrente sta creando un'autorizzazione per il proprietario potenziale, a quest'ultimo viene inviata una notifica via email che lo informa che gli viene chiesto di assumere la proprietà del file.Il potenziale proprietario accetta la richiesta di trasferimento della proprietà creando o aggiornando l'autorizzazione del file. L'autorizzazione deve includere queste impostazioni:
role=owner
etransferOwnership=true
. Se il potenziale proprietario sta creando una nuova autorizzazione, al proprietario precedente viene inviata una notifica via email che indica che la proprietà è stata trasferita.
Quando un file viene trasferito, il ruolo del proprietario precedente viene retrocesso a writer
.
Modificare più autorizzazioni con richieste batch
Ti consigliamo vivamente di utilizzare richieste batch per modificare più autorizzazioni.
Di seguito è riportato un esempio di esecuzione di una modifica collettiva delle autorizzazioni con una libreria client.
Java
Python
Node.js
PHP
.NET
Argomenti correlati
- Proteggere i contenuti dei file
- Accedere ai file di Drive condivisi tramite link utilizzando le chiavi di risorsa
- Ruoli e autorizzazioni