如何通过Google My Business API及PHP客户端获取商家评论
Google My Business 评论拉取实现指引
核心结论
不需要自行构造API请求,官方Google API PHP客户端已完整封装GMB评论相关接口,你之前使用的\Google\Service\MyBusinessBusinessInformation仅用于查询商家基础信息,无法获取评论数据,需使用专门的MyBusiness服务类实现需求。
前置配置检查
你现有的客户端初始化逻辑可用,但必须确认self::getScopes()方法返回的权限列表包含https://www.googleapis.com/auth/business.manage,这是读取GMB评论的必需权限。如果之前授权时未添加该scope,需要引导用户重新完成OAuth授权流程,旧令牌无对应权限会直接返回403错误。
完整实现代码
在你已有的有效Client实例基础上,按以下逻辑调用即可:
// 实例化GMB服务类 $myBusinessService = new \Google\Service\MyBusiness($client); // 拉取当前授权账号关联的所有商家账号 $accountList = $myBusinessService->accounts->listAccounts(); $allReviews = []; foreach ($accountList->getAccounts() as $account) { $accountResource = $account->getName(); // 拉取当前商家账号下的所有门店位置 $locationList = $myBusinessService->accounts_locations->listAccountsLocations($accountResource); if (!$locationList->getLocations()) continue; foreach ($locationList->getLocations() as $location) { $locationResource = $location->getName(); // 拉取单门店下的评论,处理分页 $pageToken = null; do { $reviewList = $myBusinessService->accounts_locations_reviews->listAccountsLocationsReviews( $locationResource, [ 'orderBy' => 'updateTime desc', 'pageSize' => 50, 'pageToken' => $pageToken ] ); if ($reviewList->getReviews()) { $allReviews = array_merge($allReviews, $reviewList->getReviews()); } $pageToken = $reviewList->getNextPageToken(); } while ($pageToken); } } // $allReviews 即为该授权账号下所有关联商家的全量评论集合
常见问题处理
- 如果实例化
\Google\Service\MyBusiness时报类不存在,是因为未安装对应服务依赖,在项目目录执行composer require google/apiclient-services即可完成安装。 - 如果接口返回权限错误,除了检查scope配置,还要确认当前授权的Google账号对对应门店拥有所有者/管理员权限,普通员工账号无评论读取权限。
- 返回的评论对象已完成结构化封装,可直接通过对象属性获取评分、评论内容、用户信息、发布时间、商家回复状态等字段,无需手动解析原始响应。
内容的提问来源于stack exchange,提问作者Hadley8899
相关产品推荐
相关产品推荐

