Я впервые использую Google App Engine, поэтому некоторые из моих терминов могут быть немного неточными, терпите меня.
У меня был PHP-код, работающий в веб-приложении за пределами GAE, который использовал библиотеку google-api-php-client для доступа к папкам gdrive и создания файлов. Это прекрасно работало.
Я пытаюсь перейти на GAE с проектом, который имеет делегирование домена, чтобы мое приложение могло получать доступ / создавать файлы в моей учетной записи gdrive. Например, предположим, что мой домен - kennywyland.com, а моя учетная запись Google, которую я использую, - [email protected].
Я создаю свой клиент Google таким образом, который я получил от https://developers.google.com/api-client-library/php/auth/service-accounts:
$client = new Google_Client();
$client->setAuth(new Google_Auth_AppIdentity($client));
$client->getAuth()->authenticateForScope('https://www.googleapis.com/auth/drive');
Затем я создаю сервис gdrive следующим образом:
$service = new Google_Service_Drive($client);
Я не получал никаких ошибок из-за этого, и я могу выполнять запросы без выдачи сообщений об ошибках, однако я получаю полностью пустые наборы результатов. У меня много файлов в моей учетной записи gdrive, поэтому я предполагаю, что я увижу их, когда опубликую следующий код в GAE и запустил его (функция retreiveAllFiles () взята из примера кода Google, найденного здесь: https://developers.google.com/drive/v2/reference/files/list#try-it):
$allfiles = retrieveAllFiles($service);
print_r($allfiles);
function retrieveAllFiles($service) {
$result = array();
$pageToken = NULL;
do {
try {
$parameters = array();
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$files = $service->files->listFiles($parameters);
$result = array_merge($result, $files->getItems());
$pageToken = $files->getNextPageToken();
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
$pageToken = NULL;
}
} while ($pageToken);
return $result;
}
Однако я получаю пустой набор результатов. Print_r () печатает пустой массив:
Array ( )
Что мне не хватает? Я чувствую, что мой проект / приложение может успешно получить доступ к серверу gdrive, но он просто не может видеть какие-либо файлы в моей учетной записи, связанные с этим рабочим доменом.