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'] = '*';
我正在尝试使用 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'] = '*';