Задача: есть сайт с формой. При заполнении пользователем формы данные должны записываться в файл и этот файл должен отправляться мне в 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'
)
);
К сожалению поставленную задачу решить так и не удалось. Причину тоже не могу понять, вроде как авторизацию не проходит.
Прошу помочь разобраться с данной проблемой или предложить альтернативные пути решения поставленной задачи.