我正在使用Google Photos API在PHP中进行项目。我有一个问题,如果我传递诸如pageSize之类的可选参数,仍然无法获取所有图像。
$optParams = array(
'pageSize' => 1,
);
$response = $photosLibraryClient->listMediaItems($optParams);
foreach ($response->iterateAllElements() as $item) {
$id = $item->getId();
$description = $item->getDescription();
$mimeType = $item->getMimeType();
$productUrl = $item->getProductUrl();
$filename = $item->getFilename();
echo '<br>';
echo $filename;
}
答案 0 :(得分:0)
我对此不是100%肯定,但似乎iterateAllElements
会在字面上遍历该帐户中的所有可用元素,而忽略了您指定的pageSize(甚至是默认的pageSize)通过无限制地向API请求所有内容。
您可以遍历返回的页面,将iterateAllElements
替换为iteratePages
,但是如果没有albumId,它似乎也无法正常工作,API返回的页面大小不规则,如下例所示:
$optParams = array(
'pageSize' => 5 // Changed
);
$response = $photosLibraryClient->searchMediaItems($optParams); // Changed the method
foreach ($response->iteratePages() as $key => $page) {
echo "Page #{$key}<br>";
foreach ($page as $item) {
$id = $item->getId();
$description = $item->getDescription();
$mimeType = $item->getMimeType();
$productUrl = $item->getProductUrl();
$filename = $item->getFilename();
echo '<br>';
echo $filename;
}
}
如果在没有提供albumId
的情况下调用了搜索或列表,则上面的示例将返回以下内容:
[
[{...},{...},{...}],
[{...},{...},{...},{...},{...}],
[{...}],
[],
[{...},{...},{...},{...},{...}],
[]
]
如果您找到针对此特定问题的好的解决方案,请告诉我。
Ps .:它们的API行为及其文档非常奇怪和混乱。