Intereting Posts
Mysql Дата запроса> = 90 дней Преобразование FULL формата даты в формате Excel в Unix timestamp PHP Mustache 2.1 частичная загрузка НЕ ​​основана на имени файла Разбейте количество (число) в записи и установите их как массив для выбора опций Как добавить OpenID на сайт php? PHP eval и фиксация ошибок (насколько это возможно) Как отобразить изображение в формате JSON / base64 в FPDF? Как изменять значения отображаются в панели задач Phabricator в режиме рабочего процесса отставания Создание вложенного массива по массиву ключей Как использовать внешний JSON …? Общие сведения о обратных вызовах сортировки или сравнения функций массива с использованием пользовательских функций Получить имя класса из файла HTML5 тип входного файла с несколькими атрибутами не работает в IE? Mysqli Prepared Stmt возвращает 0 num_rows Как я могу подключиться к серверу через JavaScript, где размещена моя PHP-программа?

API-интерфейс Google Drive PHP – простая загрузка файлов

Я пытаюсь написать небольшой скрипт для загрузки локального файла на Google Диск с помощью API-интерфейсов Google Диска. Документация очень плохо поддерживается, но до сих пор я уверен, что код должен выглядеть следующим образом:

<?php include_once 'Google/Client.php'; include_once 'Google/Service/Drive.php'; include_once 'Google/Auth/OAuth2.php'; $client = new Google_Client(); $client->setScopes(array('https://www.googleapis.com/auth/drive.file')); $client->setClientId('dfgdfgdg'); $client->setClientSecret('dfgdfgdf'); $client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob'); $service = new Google_Service_Drive($client); $data = file_get_contents("a.jpg"); // create and upload a new Google Drive file, including the data try { //Insert a file $file = new Google_Service_Drive_DriveFile($client); $file->setTitle(uniqid().'.jpg'); $file->setMimeType('image/jpeg'); $createdFile = $service->files->insert($file, array( 'data' => $data, 'mimeType' => 'image/jpeg', 'uploadType' => 'media', )); } catch (Exception $e) { print $e->getMessage(); } print_r($createdFile); ?> 

Проблема в том, что я не могу выполнить право аутентификации (или я делаю что-то еще неправильно?). Я получил ошибку:

 HTTP Error: Unable to connect: 'fopen(compress.zlib://https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart) [function.fopen]: failed to open stream: operation failed' 

Вслед за этой ошибкой:

 Notice: Undefined variable: createdFile in C:\wamp\www\GoogleAPI\index.php on line 39 

Что я делаю не так? Можете ли вы предоставить простой рабочий сценарий загрузки файла на Google Диск с помощью API-интерфейсов Google Диска? Заранее спасибо!

Используйте этот код для проверки подлинности и загрузки тестового файла. Для <YOUR_REGISTERED_REDIRECT_URI> вам необходимо установить <YOUR_REGISTERED_REDIRECT_URI> (а также в консоли) на этот документ.

 require_once 'Google/Client.php'; require_once 'Google/Service/Drive.php'; $client = new Google_Client(); // Get your credentials from the console $client->setClientId('<YOUR_CLIENT_ID>'); $client->setClientSecret('<YOUR_CLIENT_SECRET>'); $client->setRedirectUri('<YOUR_REGISTERED_REDIRECT_URI>'); $client->setScopes(array('https://www.googleapis.com/auth/drive.file')); session_start(); if (isset($_GET['code']) || (isset($_SESSION['access_token']) && $_SESSION['access_token'])) { if (isset($_GET['code'])) { $client->authenticate($_GET['code']); $_SESSION['access_token'] = $client->getAccessToken(); } else $client->setAccessToken($_SESSION['access_token']); $service = new Google_Service_Drive($client); //Insert a file $file = new Google_Service_Drive_DriveFile(); $file->setName(uniqid().'.jpg'); $file->setDescription('A test document'); $file->setMimeType('image/jpeg'); $data = file_get_contents('a.jpg'); $createdFile = $service->files->create($file, array( 'data' => $data, 'mimeType' => 'image/jpeg', 'uploadType' => 'multipart' )); print_r($createdFile); } else { $authUrl = $client->createAuthUrl(); header('Location: ' . $authUrl); exit(); } 

Использовать это

 <?php require_once 'google-api-php-client/src/Google_Client.php'; require_once 'google-api-php-client/src/contrib/Google_DriveService.php'; $client = new Google_Client(); // Get your credentials from the console $client->setClientId('YOUR_CLIENT_ID'); $client->setClientSecret('YOUR_CLIENT_SECRET'); $client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob'); $client->setScopes(array('https://www.googleapis.com/auth/drive')); $service = new Google_DriveService($client); $authUrl = $client->createAuthUrl(); //Request authorization print "Please visit:\n$authUrl\n\n"; print "Please enter the auth code:\n"; $authCode = trim(fgets(STDIN)); // Exchange authorization code for access token $accessToken = $client->authenticate($authCode); $client->setAccessToken($accessToken); //Insert a file $file = new Google_DriveFile(); $localfile = 'a.jpg'; $title = basename($localfile); $file->setTitle($title); $file->setDescription('My File'); $file->setMimeType('image/jpeg'); $data = file_get_contents($localfile); $createdFile = $service->files->insert($file, array( 'data' => $data, 'mimeType' => 'image/jpeg', )); print_r($createdFile); ?>