使用以下代码
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,但实际上并未创建任何内容。我究竟做错了什么?
答案 0 :(得分:1)
您当前的代码正在作为服务帐户进行身份验证并创建文件。然后,只有服务帐户才能访问生成的文件,而不是Google用户。您可以通过在代码中执行文件列表而不是创建来确认这一点,您将获得之前创建的文件。
您的代码已经过sub =注释掉了。取消注释该行,并确保您已关注the domain-wide delegation instructions,以便您的代码可以进行身份验证并充当您的Google用户。