调用Google Photos API batchAddMediaItemsToAlbum遇‘Expect array’错误求助
问题
调用Google Photos API的batchAddMediaItemsToAlbum方法时触发异常,错误信息为:
" Expect array. "
相关代码如下:
public function album_addIds($itemIds, $albumId) { if (!is_array($itemIds)) { $itemIds = [$itemIds]; } try { $response = $this->service->batchAddMediaItemsToAlbum($albumId, $itemIds); } catch (\Exception $ex) { $noop = 1; } }
已确认:$albumId为字符串类型,经断点验证$itemIds确实是数组。
排查思路与解决方案
检查API方法参数格式要求
Google Photos PHP客户端库的batchAddMediaItemsToAlbum方法,第二个参数并非直接传入ID数组,而是需要构造包含mediaItemIds字段的关联数组,这是API要求的请求体结构。修正参数传递方式
修改调用方法的代码,将$itemIds包装到指定结构中:
$response = $this->service->batchAddMediaItemsToAlbum($albumId, [ 'mediaItemIds' => $itemIds ]);
验证客户端库版本
若使用的是旧版本Google Photos客户端库,可能存在参数格式差异。确认当前库版本与官方文档匹配,必要时更新到最新稳定版。检查数组内容合法性
确保$itemIds数组内的每个元素都是有效的字符串类型MediaItem ID,避免空值、非字符串元素。可添加校验逻辑:
foreach ($itemIds as $id) { if (!is_string($id) || empty($id)) { throw new \InvalidArgumentException('Invalid media item ID'); } }
内容的提问来源于stack exchange,提问作者Datadimension
相关产品推荐
相关产品推荐

