无法在Google云端硬盘上看到上传的文件

时间:2014-04-06 13:53:24

标签: php google-drive-api

我正在使用PHP和服务帐户连接测试文件并将其上传到Google云端硬盘。它没有给我任何错误,但当我使用我的帐户登录谷歌驱动器并检查此文件。我找不到它。为什么? 请帮忙。

我使用了以下代码:

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
<?php 
set_include_path( get_include_path() . PATH_SEPARATOR . 'google-api-php-client-master/src' );

require_once 'google-api-php-client-master/src/Google/Client.php';
require_once 'google-api-php-client-master/src/Google/Service/Drive.php';
require_once "google-api-php-client-master/src/Google/Service/Oauth2.php";
session_start();

$DRIVE_SCOPE = 'https://www.googleapis.com/auth/drive';
$SERVICE_ACCOUNT_EMAIL = '<xyz>@developer.gserviceaccount.com';
$SERVICE_ACCOUNT_PKCS12_FILE_PATH = '<abc>-privatekey.p12';

$key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH);
$auth = new Google_Auth_AssertionCredentials(
    $SERVICE_ACCOUNT_EMAIL,
    array($DRIVE_SCOPE),
    $key);
$client = new Google_Client();
//$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
$service = new Google_Service_Drive($client);

//Insert a file
$file = new Google_Service_Drive_DriveFile();
$file->setTitle('My document');
$file->setDescription('A test document');
$file->setMimeType('text/plain');

$data = file_get_contents('My document.txt');

$createdFile = $service->files->insert($file, array(
      'data' => $data,
      'mimeType' => 'text/plain',
        'uploadType' => 'media'
    ));
print_r($createdFile);

?>

    </body>
</html>

1 个答案:

答案 0 :(得分:1)

您创建的文档与您的服务帐户相关联。您无法使用自己的服务帐户登录Google云端硬盘网站。 Explanation of service accounts解释了这一点。您有两种选择:

  1. 如果您的服务帐户和个人帐户可以看到该文档非常重要,请使用个人Google帐户创建该文档,并与您的服务帐户共享(通过电子邮件地址)。

  2. 了解文档确实存在,但仅供服务帐户使用。在代码示例的$ createdFile变量中,您将看到&#34; downloadUrl&#34;属性。在下面的代码中使用此网址。

    $ request = new Google_Http_Request();
    $ requestSigned = self :: $ client-&gt; getAuth() - &gt; sign($ request);
    $ response = self :: $ client-&gt; getIo() - &gt; makeRequest($ requestSigned);
    $ requestSigned-&GT; getResponseBody();

  3. 使用get method或list方法,您还可以检索&#34; downloadUrl&#34;稍后您的文件。