Как отправить данные из формы с сайта в Google Drive?

Задача: есть сайт с формой. При заполнении пользователем формы данные должны записываться в файл и этот файл должен отправляться мне в Google Drive.

Для решения этой задачи я взял специальный клиент для google api: https://github.com/google/google-api-php-client
И документация к нему: https://developers.google.com/api-client-library/p...

В документации описано несколько способов авторизации. Я выбрал "OAuth 2.0 for Server to Server Applications", т.к. мне нужно отправлять файл конкретно в мой диск, а не в пользовательский.
Далее сделал все по инструкции, добавил проект в Google Developers Console, сгенерировал CLIENT ID и P12 ключ.

Использовав примеры из документации, написал такой код:
<?php
require_once realpath(dirname(__FILE__) . '/../src/Google/autoload.php');

$client_email = '***';
if (file_exists("key.p12")) {
  $private_key = file_get_contents('key.p12');
}

$scopes = array('https://www.googleapis.com/auth/drive');
$credentials = new Google_Auth_AssertionCredentials(
    $client_email,
    $scopes,
    $private_key
);

$client = new Google_Client();
$client->setAssertionCredentials($credentials);
if ($client->getAuth()->isAccessTokenExpired()) {
  $client->getAuth()->refreshTokenWithAssertion();
}
$service = new Google_Service_Drive($client);

DEFINE("TESTFILE", 'testfile-small.txt');
if (!file_exists(TESTFILE)) {
  $fh = fopen(TESTFILE, 'w');
  fwrite($fh, "TEST TEST TEST");
  fclose($fh);
}

$file = new Google_Service_Drive_DriveFile();
$file->setTitle("Hello World!.txt");
$result2 = $service->files->insert(
    $file,
    array(
      'data' => file_get_contents(TESTFILE),
      'mimeType' => 'application/octet-stream',
      'uploadType' => 'multipart'
    )
);


К сожалению поставленную задачу решить так и не удалось. Причину тоже не могу понять, вроде как авторизацию не проходит.

Прошу помочь разобраться с данной проблемой или предложить альтернативные пути решения поставленной задачи.
  • Вопрос задан
  • 1286 просмотров
Пригласить эксперта
Ответы на вопрос 1
@lavrentiev
Back-end разработчик
Попробуй сделать проверку на существование файла key.p12 а потом уже его подгружай. А вообще покажи лучше ошибку которую тебе возвращает Google API так будет на много понятней, что бы тебе могли подсказать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы