пытается понять токен oauth2 и обновить процессы токена
я получил этот код
$url = 'https://www.googleapis.com/oauth2/v3/token';
$data = array('client_id' => 'clientid', 'client_secret' => 'secret','refresh_token' => 'token','grant_type' => 'refresh_token');
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded",
'method' => 'POST',
'approval_prompt'=>'force',
'access_type'=>'offline',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
код выше дает мне токен доступа, и я последовал за этим ссылка на сайт Предложенный одним из сотрудников stackoverflower, pinoyyid, НО, я запутался в том, как правильно использовать полученный токен доступа для доступа к диску и копирования файла …
весь процесс, который я видел, обычно включает в себя $client = new Google_Client()
и я не уверен, как использовать всю POST http: // ….. вещь, поэтому в основном мне нужно выяснить, использую ли я токен доступа, который я получил с кодом выше, в новом экземпляре клиента Google, или я просто делаю пост на URL с необходимой информацией (о которой я тоже не понимаю), любая помощь / разъяснения приветствуются, ребята, на самом деле
РЕДАКТИРОВАТЬ # 1
я хочу, чтобы конечный пользователь имел доступ к моему диску через мою веб-страницу, чтобы он мог скопировать электронную таблицу на моем диске и получить доступ к ней через мой веб-сайт, чтобы хранить данные в электронной таблице, эта таблица всегда будет на моем диск, никогда не конечный пользователь
РЕДАКТИРОВАТЬ № 2
код в соответствии с вашими сообщениями заключается в следующем, используя учетную запись службы ,,,, файлы находятся в той учетной записи Gmail, который я создал на консоли API учетную запись службы
<?php
require 'Google/autoload.php';
$client = new Google_Client();
// Replace this with your application name.
$client->setApplicationName("TEST");
// Replace this with the service you are using.
$service = new Google_Service_Drive($client);
// This file location should point to the private key file.
$key = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/number-privatekey.p12');
$user_to_impersonate = '[email protected]';
$cred = new Google_Auth_AssertionCredentials(
'[email protected]',
array('https://www.googleapis.com/auth/drive'), ****//this here has to be drive not drive.file
$key,
'notasecret',
'http://oauth.net/grant_type/jwt/1.0/bearer',
$user_to_impersonate
);
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion();
}
$originFileId = "longnumber";
$copyTitle = 'copied';
$newfile = copyFile($service, $originFileId, $copyTitle);
print_r($newfile);
function copyFile($service, $originFileId, $copyTitle)
{
$copiedFile = new Google_Service_Drive_DriveFile();
$copiedFile->setTitle($copyTitle);
try {
return $service->files->copy($originFileId, $copiedFile);
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
return NULL;
}
?>
так что теперь все заработало, ребята, все на свое время, ребята, и отредактировал мой пост, чтобы отразить чертову штуку
Если вы хотите предоставить конечному пользователю доступ к вашему диску, вы должны предоставить вашему приложению полномочия для выполнения вызовов API от имени пользователя (в данном случае вас) в вашем домене. Для этого вам нужно настроить служебную учетную запись и сгенерировать ключ p12 в консоли разработчиков Google. Вы должны войти в https://www.googleapis.com/auth/drive Область действия API в вашей консоли администратора также.
Полное объяснение и примеры можно найти здесь: https://developers.google.com/api-client-library/php/auth/service-accounts.
Для этого вам также понадобится клиентская библиотека Google API: https://github.com/google/google-api-php-client (также упоминается в руководстве Google).
Пример кода, позволяющий пользователям совершать вызовы API от имени одной из ваших учетных записей: https://developers.google.com/api-client-library/php/guide/aaa_oauth2_service
Других решений пока нет …