php - 如何在 Google Photos API 中使用可选参数?
问题描述
我正在使用 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;
}
解决方案
我不是 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 行为和它的文档非常奇怪和令人困惑。
推荐阅读
- regex - 如何使用 Excel VBA 获取包含在 2 个字符之间的字符串的特定部分?
- python - 与程序保持一致的 Python 数据库
- latex - 如何使用 dot2tex 在边缘标签中获取乳胶?
- java - 如果没有抛出异常,JpaRepository 的 findAll() 是否保证返回非空结果?
- xctest - XCUITest - resetAuthorizationStatus(for:) 不工作
- android-studio - Android Studio 选项卡到 Flutter 中的间距(Dart)
- terraform - 如何避免在 GCP 中使用 random_id 来创建托管实例组
- tensorflow - 如何避免在 CNN 中过拟合?
- openapi - 如何在 Springdoc Open API 中对单个服务项目中的公共响应类进行建模
- javascript - 电子应用程序白屏,但按钮功能正常 - Windows 7