2017-02-16 7 views
0

Когда я пытаюсь загрузить файл на Google Диск с помощью API Google (https://github.com/google/google-api-php-client), я получаю сообщение об ошибке «Недостаточное разрешение» (чтение файлов идет без проблем). Вот пример кода:Не удается загрузить файл на Google Диск с помощью API Google (PHP)

require_once 'google-api-php-client/vendor/autoload.php'; 

class GoogleConnector { 
    private $client; 
    public $report; 

    function __construct($filesToSend, $backupFolder) { 
     session_start(); 
     $this->client = new Google_Client(); 
     $this->client->setAuthConfig('client_secret.json'); 
     $this->client->addScope("https://www.googleapis.com/auth/drive"); 
     //also try different variants of this: 
     //$this->client->setScopes(implode(' ', array(Google_Service_Drive::DRIVE))); 

     if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { 
      $this->client->setAccessToken($_SESSION['access_token']); 
      $service = new Google_Service_Drive($this->client); 
      $folderId = "FolderIdFromGoogleDrive"; 

      $this->report = ""; 
      foreach ($filesToSend as $file) { 
       $this->report .= $this->uploadFile($file, $folderID, $service); 
      } 
     } 
     else { 
      $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/googleapi/oauth2callback.php'; 
      header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 
     } 
    } 

    function uploadFile($fileName, $folderID, Google_Service_Drive $driveService) { 
     $fileMetadata = new Google_Service_Drive_DriveFile(array(
       'name' => $fileName, 
       'parents' => array($folderId) 
     )); 

     try { 
      $content = file_get_contents($fileName); 
      $file = $driveService->files->create($fileMetadata, array(
        'data' => $content, 
        'mimeType' => 'application/x-gzip', 
        'uploadType' => 'multipart', 
        'fields' => 'id')); 
      return "File '$fileName' uploaded with id '$file->id'" . PHP_EOL; 
     } 
     catch (Exception $exc) { 
      return "Error working with file '$fileName':" . $exc->getMessage(); 
     } 
    } 
} 

Как его исправить?

+0

Убедитесь, что пользователь вы аутентичности с имеет доступ к «FolderIdFromGoogleDrive – DaImTo

+0

Я использую только один пользователь и пользователь может создавать файлы внутри„FolderIdFromGoogleDrive“через веб-сайт Google Drive. – Varro

+0

Очевидно, что если вы получаете «Недостаточное разрешение», попробуйте сделать файл.list и убедитесь, что папка отображается для пользователя. Если он появится, повторите проверку подлинности пользователя, который вы должны пройти аутентификацию один раз с использованием разностной области, тогда один из которых вы разместили здесь. – DaImTo

ответ

0

Убедитесь, что у вас есть действующие Permissions for the file. Вы должны установить роль Разрешения на «владелец» и роль пользователя (так как вы делаете загрузку).

Вы можете прочитать подробнее об этом на About Permissions

Смежные вопросы