【问题标题】:Returning folder ID but not creating folder返回文件夹 ID 但不创建文件夹
【发布时间】:2016-03-06 04:27:39
【问题描述】:

使用下面的代码

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,但实际上没有创建任何内容。我到底做错了什么?

【问题讨论】:

    标签: php google-drive-api


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      相关资源
      最近更新 更多