File.list 返回有限的文件资源数据

File.list returning limited File resource data

我正在尝试使用 google api v2 来检索我的 google 驱动器中的所有文件,我成功获得了文件列表,但没有大小、创建日期等详细信息... 这是我的代码:

$client = new Google_Client();
$client->setClientId('XXX.apps.googleusercontent.com');
$client->setClientSecret('XXX');
client->addScope('https://www.googleapis.com/auth/drive');

//$client->setAccessType('offline');
//$client->setApprovalPrompt('force');


$creds = @file_get_contents("ggcreds");

$client->setAccessToken($creds);
$service = new Google_Service_Drive($client);

if (!$service)
    exit();

$pageToken = NULL;

do
{
    $parameters = array();
    $parameters['pageToken'] = $pageToken;

    $files = $service->files->listFiles($parameters);
    $pageToken=$files->nextPageToken;

    $files = $files->files;

    for($i=0;$i<1000;$i++)
    {
        if (!isset($files[$i]))
            break;

        print_r($files[$i]);
    }
}
while($pageToken);  

所以我尝试获取一个文件的所有文件详细信息:

$service->files->get($id)

但我明白了:

Google_Service_Drive_DriveFile Object
(
    [collection_key:protected] => spaces
    [appProperties] => 
    [capabilitiesType:protected] => Google_Service_Drive_DriveFileCapabilities
    [capabilitiesDataType:protected] => 
    [contentHintsType:protected] => Google_Service_Drive_DriveFileContentHints
    [contentHintsDataType:protected] => 
    [createdTime] => 
    [description] => 
    [explicitlyTrashed] => 
    [fileExtension] => 
    [folderColorRgb] => 
    [fullFileExtension] => 
    [hasAugmentedPermissions] => 
    [hasThumbnail] => 
    [headRevisionId] => 
    [iconLink] => 
    [id] => 1dDXhxWf6kN-keNmi5-009o_oeQ5xWXXXXX
    [imageMediaMetadataType:protected] => Google_Service_Drive_DriveFileImageMediaMetadata
    [imageMediaMetadataDataType:protected] => 
    [isAppAuthorized] => 
    [kind] => drive#file
    [lastModifyingUserType:protected] => Google_Service_Drive_User
    [lastModifyingUserDataType:protected] => 
    [md5Checksum] => 
    [mimeType] => image/jpeg
    [modifiedByMe] => 
    [modifiedByMeTime] => 
    [modifiedTime] => 
    [name] => IMG_20180110_165918.jpg
    [originalFilename] => 
    [ownedByMe] => 
    [ownersType:protected] => Google_Service_Drive_User
    [ownersDataType:protected] => array
    [parents] => 
    [permissionsType:protected] => Google_Service_Drive_Permission
    [permissionsDataType:protected] => array
    [properties] => 
    [quotaBytesUsed] => 
    [shared] => 
    [sharedWithMeTime] => 
    [sharingUserType:protected] => Google_Service_Drive_User
    [sharingUserDataType:protected] => 
    [size] => 
    [spaces] => 
    [starred] => 
    [teamDriveId] => 
    [thumbnailLink] => 
    [thumbnailVersion] => 
    [trashed] => 
    [trashedTime] => 
    [trashingUserType:protected] => Google_Service_Drive_User
    [trashingUserDataType:protected] => 
    [version] => 
    [videoMediaMetadataType:protected] => Google_Service_Drive_DriveFileVideoMediaMetadata
    [videoMediaMetadataDataType:protected] => 
    [viewedByMe] => 
    [viewedByMeTime] => 
    [viewersCanCopyContent] => 
    [webContentLink] => 
    [webViewLink] => 
    [writersCanShare] => 
    [internal_gapi_mappings:protected] => Array
        (
        )

    [modelData:protected] => Array
        (
        )

    [processed:protected] => Array
        (
        )

)

我尝试添加更多范围但没有成功,范围 "drive" 应该包括所有(不是吗?)。

我还尝试在 google api 资源管理器中使用我得到的第一个文件 ID,它仅提供驱动器范围的所有详细信息,所以我不明白。

实际上我认为您使用的是 Google Drive v3 而不是 v2 我可以从您的回复中看出这一点。 v2 中的文件资源在 v3 中有标题。

默认情况下,Drive v3 不会return所有字段的所有值google希望您使用字段参数来仅return您想要的数据。就个人而言,我喜欢看到所有内容,所以只需使用 *

我认为您需要尝试添加 fields 参数。这应该return所有的信息。

$parameters['fields'] = '*';