2016-03-06 189 views
0

使用下面返回文件夹ID而不是创建文件夹

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

您当前的代码正在作为服务帐户进行身份验证并创建文件。结果文件将只能被服务帐户访问,而不是Google用户。您可以通过在代码中创建文件列表而不是创建文件来确认,您将恢复之前创建的文件。

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

相关问题