2014-07-03 2 views
4

Contexte

Je construis une application web php qui a besoin de télécharger des fichiers sur un lecteur Google qui appartient à un utilisateur (appelons-le Bob). J'ai utilisé un Google Drive service account (appelons-le [email protected]).quota, les fichiers orphelins et ajouts à l'aide de compte de service avec Google Drive API

Bob a créé un dossier ("uploads") dans son Google Drive et l'a partagé avec [email protected]

Le compte de service ([email protected]) peut utiliser l'API Drive pour répertorier les fichiers dans ce dossier de téléchargement partagé et y télécharger des fichiers. Les fichiers téléchargés apparaissent également dans Google Drive de Bob. Jusqu'ici tout va bien.

Le problème

Le propriétaire des fichiers téléchargés par [email protected] est [email protected], comme on pouvait s'y attendre. Cela a les conséquences suivantes:

  1. Étant donné que [email protected] est le propriétaire des fichiers téléchargés, ils sont comptabilisés dans le quota de ce compte. Cependant, Bob a acheté plus d'espace pour son Google Drive et souhaite que les fichiers téléchargés soient pris en compte dans son quota pour ne pas manquer d'espace dans le compte de service.
  2. Lorsqu'un fichier précédemment téléchargé par [email protected] est supprimé (par Bob) à partir du dossier de téléchargement partagé, quelques choses se produisent:
    • Le fichier supprimé ne se présente pas dans le dossier upload soit pour l'utilisateur.
    • Bob peut toujours voir le fichier supprimé dans sa vue "Tous les éléments".
    • Le fichier supprimé est toujours visible lorsque le compte de service répertorie tous les fichiers via l'API, mais qu'il n'a aucun parent (c'est-à-dire qu'il est orphelin).
    • Lorsque vous récupérez les détails du fichier supprimé via l'API, cela indique qu'il utilise le quota maximal.

Que faire?

Comment ce cas d'utilisation peut-il être géré (proprement)? Je vois 2 solutions possibles:

  1. Lors du téléchargement d'un fichier, définissez la propriété sur Bob. Est-ce possible? Cela ne fonctionne pas! Tout d'abord, cela ne fonctionne pas avec les fichiers téléchargés pour un compte ordinaire. Deuxièmement, le compte de service a un email @ developer.gserviceaccount.com tandis que le compte de Bob a @ gmail.com. du doc dit:

clients Google Apps: Vous ne pouvez pas faire quelqu'un en dehors de votre domaine propriétaire de votre Google Doc. Seuls les clients Google Apps des domaines Premier, Government et Education peuvent transférer la propriété d'un fichier synchronisé ou téléchargé (comme un fichier PDF ou un fichier image). Utilisateurs de Drive Consumer: vous ne pouvez pas transférer la propriété d'un fichier synchronisé ou téléchargé (comme un fichier PDF ou un fichier image).

  1. Ne pas utiliser un compte de service et ont l'utilisation de l'application web compte de Bob directement à la place. Cela nécessite toutefois d'obtenir un jeton d'accès OAuth pour Bob.En outre, l'utilisation d'un compte de service avec un dossier de téléchargement partagé m'a permis de restreindre l'accès du compte de service au seul dossier de téléchargement.
  2. Rechercher périodiquement des fichiers orphelins dans le compte de service pour les nettoyer. Cela ne résout cependant pas la question du quota utilisé pour les fichiers non supprimés ...

Aidez-nous!

Information concernant offline access and access tokens

Répondre

1

Je pense que vous devriez voir cette page: Perform Google Apps Domain-Wide Delegation of Authority. Cette page montre comment utiliser SA pour appeler des requêtes au nom de l'utilisateur Bob. Cette page contient le code Java qui décrit comment créer l'objet Drive pour Bob. En utilisant ce Drive, vous serez en mesure de télécharger le fichier et le propriétaire du fichier sera Bob pas [email protected] J'utilise beaucoup cette méthode et ça marche pour moi.

+0

Très intéressant, merci. J'utilisais un compte habituel non associé à un compte Google Apps pour le développement, mais je vais essayer. Je vais devoir m'assurer que Bob utilise également Google Apps. – bernie

Questions connexes