2017-07-23 2 views
1

Je crée un script PHP simple pour transférer les propriétaires de fichiers de lecteurs entre les utilisateurs d'un même domaine. Je veux utiliser Admin SDK Transfers et Insérer la méthode.Insérer un API de transfert de données API: manquant resource.applicationDataTransfer

Google dispose d'une documentation sur les transferts here

j'ai essayé de transférer des données via leur interface de page Web et il est allé bien. Ce que je ne peux pas faire, c'est comment le faire fonctionner avec la bibliothèque du client PHP.

Disons que j'ai préparé objet pour créer des demandes de ressources des transferts

$transfers = new \Google_Service_DataTransfer($googleConnection); 

gère googleConnection autorisation de compte de service si je peux faire des demandes comme celle-ci:

$data = $this->transfers->transfers->listTransfers(); 

Cela renvoie les données de tous les transferts existants dans le domaine. Basé sur la documentation et l'opération d'insertion de la bibliothèque PHP Client devrait également fonctionner.

$transferParams = new \Google_Service_DataTransfer_ApplicationTransferParam(); 
    $transferParams->setKey("PRIVACY_LEVEL"); //what kind of docs I want to transfer 
    $transferParams->setValue(['SHARED', 'PRIVATE']); 

    $appDataTransfer = new \Google_Service_DataTransfer_ApplicationDataTransfer(); 
    $appDataTransfer->setApplicationTransferParams($transferParams); 

    $appDataTransfer->applicationId = "iDString"; //set application ID 

    $newTransfer = New \Google_Service_DataTransfer_DataTransfer(); 

    $newTransfer->setOldOwnerUserId('accountID'); //origin account IDs are placeholders 
    $newTransfer->setNewOwnerUserId('account2ID'); //destination account 
    $newTransfer->setApplicationDataTransfers($appDataTransfer); 

    $result = $this->transfers->transfers->insert($newTransfer); //execute insert 

Après l'exécution insert Je reçois le code 400 avec le message manquant champ obligatoire: [resource.applicationDataTransfer].

Si je teste des paramètres réels via le Web, ils fonctionnent. Il me manque quelque chose, car cette exception n'a aucun sens.

Je suis également ouvert aux solutions alternatives.

Répondre

0

méthode setApplicationDataTransfers attend un tableau de Google_Service_DataTransfer_DataTransfer si vous avez juste besoin de mettre à jour la ligne suivante (notez le [] dans les params)

$newTransfer->setApplicationDataTransfers([$appDataTransfer]); 
+0

Très belle prise. Je regardais dans les sources de la bibliothèque et je n'ai jamais trouvé que c'était la raison. Cela fonctionne maintenant, alors merci. – fingal56