Google drive multipart Загрузка возвратов - (403) Недостаточно прав доступа

0

Я пытаюсь загрузить файл на диск с помощью учетной записи службы. Я получаю следующее сообщение об ошибке "Недостаточно прав".

Ошибка при вызове POST https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart: (403) Недостаточное разрешение '

вот мой общий код.

$client_id = '69649809374-ib5c5qmr7n34adsfsdfsxxxifss95ue7qouplh7v3r.apps.googleusercontent.com'; //Client ID
$service_account_name = '269649809374-ib5c5qmr7n34aifss95ue7qouplh7v3r@developer.gserviceaccount.com'; //Email Address
$key_file_location = 'secretkey.p12'; //key.p12

echo pageHeader("Service Account Access");
if ($client_id == '269649809374-b5c5qmr7n34aifss95ue7qouplh7v3r.apps.googleusercontent.com'
    || !strlen($service_account_name)
    || !strlen($key_file_location)) {
      echo missingServiceAccountDetailsWarning();
         }

$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");

if (isset($_SESSION['service_token']))
    {
    $client->setAccessToken($_SESSION['service_token']);
    }
$key = file_get_contents($key_file_location);

$cred = new Google_Auth_AssertionCredentials(
    $service_account_name,
    array('https://www.googleapis.com/auth/drive'),
    $key);

$client->setAssertionCredentials($cred);
$client->addScope("https://www.googleapis.com/auth/drive");

if ($client->getAuth()->isAccessTokenExpired()) {
   $client->getAuth()->refreshTokenWithAssertion($cred);
   }
$_SESSION['service_token'] = $client->getAccessToken();


$service = new Google_Service_Drive($client);

$file = new Google_Service_Drive_DriveFile();
$parentId='0B7yersFxlKMTR2RsMThQSG1RUVk';
$parent = new Google_Service_Drive_ParentReference();

// create a file

DEFINE("TESTFILE", 'testfile-small.txt');
if (!file_exists(TESTFILE)) 
                      {
                     $fh = fopen(TESTFILE, 'w');
                      fseek($fh, 1024 * 1024);
                     fwrite($fh, "this is sekhar", 1);
                       fclose($fh);
                        }

                     $parent->setId($parentId);
                     $file->setParents(array($parent));
                      $file->setTitle("I am service Account");

                   $result = $service->files->insert($file,array('data' => file_get_contents(TESTFILE),
        'mimeType' => 'application/octet-stream',
        'uploadType' => 'media'));

есть ли что-то не так с моим кодом.

Теги:
google-drive-sdk
google-api-php-client

1 ответ

2
403) Insufficient Permission' 

Это означает, что ваша учетная запись службы не имеет доступа к тому, что вы просите об этом.

Первое, что я хотел бы проверить, это то, что вы правильно дали доступ учетной записи службы к рассматриваемому каталогу. Он один на вашем диске или он принадлежит учетной записи службы? (вы предоставляете доступ учетной записи службы к папке диска, как если бы обычный пользователь принял адрес электронной почты учетной записи службы и добавил его, ему потребуется доступ на запись).

Поскольку вы не делаете список каталогов, вам также может потребоваться дважды проверить, что у вас есть правильный идентификатор каталога. Или просто используйте root для проверки кода загрузки.

'0B7yersFxlKMTR2RsMThQSG1RUVk'
  • 0
    Благодаря DalmTo, проблема с папкой, теперь я могу загружать файлы, но как я могу получить к ним доступ, когда я пытаюсь получить к ним доступ, говоря, что у него нет разрешения, где я могу изменить разрешение на просмотр его публично, чтобы я мог можете встраивать их в мое приложение
  • 0
    это другой вопрос, я думаю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню