我正在尝试编写一个小脚本,以使用Google Drive PHP API将本地文件上传到Google Drive。该文档的维护很差,但是到目前为止,我很确定代码看起来应该像这样:
<?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 Drive PHP API将文件上传到Google Drive的简单工作脚本?先感谢您!
使用此代码来认证和上传测试文件。您需要<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(); }