2017-10-17 14 views
0

Je suis conscient qu'il y a des centaines de billets couvrant des variations de ce sujet, et j'ai passé les dernières heures à les lire, mais je ne peux pas le faire travail. Je veux télécharger des fichiers sur mon compte Google Drive à partir de mon serveur utilisant PHP via le SDK Google Drive (j'utilise la version 2.2.0). Le script s'exécute correctement, il semble télécharger quelque part et renvoie même un identifiant de fichier (toujours le même), mais il n'apparaît pas dans mon Google Drive et le message suivant s'affiche quand j'essaie de voir le fichier :Chargement de fichiers sur mon compte Google Drive en utilisant PHP

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "notFound", 
    "message": "File not found: <FILE_ID>.", 
    "locationType": "parameter", 
    "location": "fileId" 
    } 
    ], 
    "code": 404, 
    "message": "File not found: <FILE_ID>." 
} 
} 

J'ai configuré un compte de service et téléchargé les informations d'identification JSON. Mon but est de créer une fonction pour télécharger des fichiers stockés sur mon serveur, donc je n'ai pas besoin d'un écran de consentement oAuth.

est ici le code de test jusqu'à présent:

<?php 

    include_once __DIR__ . '/vendor/autoload.php'; 

    putenv('GOOGLE_APPLICATION_CREDENTIALS=../../../keys/MyProject-xxxxxxxxxxxx.json'); 

    $client = new Google_Client(); 
    $client->addScope(Google_Service_Drive::DRIVE); 
    $client->useApplicationDefaultCredentials(); 
    $client->setApplicationName("MyApplication"); 
    $client->setScopes(['https://www.googleapis.com/auth/drive.file']); 

    $file = new Google_Service_Drive_DriveFile(); 
    $file->setName(uniqid().'.jpg'); 
    $file->setDescription('A test document'); 
    $file->setMimeType('image/jpeg'); 

    $data = file_get_contents('cat.jpg'); 

    $service = new Google_Service_Drive($client); 

    $createdFile = $service->files->create($file, array(
    'data' => $data, 
    'mimeType' => 'image/jpeg', 
    'uploadType' => 'multipart')); 

    echo("<a href='https://www.googleapis.com/drive/v3/files/".$createdFile->id."?key=<MY_API_KEY>&alt=media' target='_blank'>Download</a>"); 

Répondre

1

Résolu!

Vous devez créer un dossier dans Google Drive, puis ajouter l'adresse e-mail du compte de service à la liste des personnes pouvant ajouter & modifier.

Ensuite, vous devez spécifier l'ID de dossier dans votre code:

$file->setParents(array("0B_xxxxxxxxxxxxxxxxxxxxxxxxx"));