返回文件夹ID但不创建文件夹

时间:2016-03-06 04:27:40

标签: php google-drive-api

使用以下代码

define('DRIVE_SCOPE', 'https://www.googleapis.com/auth/drive');
define('SERVICE_ACCOUNT_EMAIL', 'xxx.iam.gserviceaccount.com');
define('SERVICE_ACCOUNT_PKCS12_FILE_PATH', 'xxx');

function buildService($userEmail) {
    $key = file_get_contents(SERVICE_ACCOUNT_PKCS12_FILE_PATH);
    $auth = new Google_Auth_AssertionCredentials(
    SERVICE_ACCOUNT_EMAIL,
    array(DRIVE_SCOPE),
    $key);
    //$auth->sub = $userEmail;
    $client = new Google_Client();
    $client->setAssertionCredentials($auth);
    return new Google_Service_Drive($client);
}

$service = buildService('xxx.apps.googleusercontent.com');

$fileMetadata = new Google_Service_Drive_DriveFile(array(
    'name' => 'Invoices',
    'mimeType' => 'application/vnd.google-apps.folder'
));

$file = $service->files->create($fileMetadata, array(
    'fields' => 'id'
));

printf("Folder ID: %s\n", $file->id);

我一直在尝试通过PHP在我的云端硬盘帐户上创建一个文件夹。我相信一切都配置正确,我得到了一个结果

  

文件夹ID:0B2nllBpB_k0NQWFNUjlSc0NUdE0

但是我的驱动器帐户上没有创建该文件夹。创建文件也是如此。它不断返回ID,但实际上并未创建任何内容。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

您当前的代码正在作为服务帐户进行身份验证并创建文件。然后,只有服务帐户才能访问生成的文件,而不是Google用户。您可以通过在代码中执行文件列表而不是创建来确认这一点,您将获得之前创建的文件。

您的代码已经过sub =注释掉了。取消注释该行,并确保您已关注the domain-wide delegation instructions,以便您的代码可以进行身份​​验证并充当您的Google用户。