You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Google My Business获取评论?无法列出关联位置求助

问题:Google My Business API无法获取账号关联位置

你提到能够成功获取GMB账号ID,但调用listAccountsLocations时无法返回关联的位置,进而无法获取评论。结合你的代码和常见的GMB API问题,我整理了几个可能的原因和对应的解决办法:

1. 服务账号缺少GMB账号的权限

服务账号是独立的身份,必须被手动添加到你的Google My Business账号中并赋予管理权限,否则即使能拿到账号ID,也无法访问关联的位置数据:

  • 登录Google My Business后台,进入你的账号管理页面
  • 找到「用户管理」选项,添加服务账号的邮箱(格式类似xxx@your-project.iam.gserviceaccount.com)
  • 给该账号分配「所有者」或「管理者」权限,等待5-10分钟让权限生效

2. 使用了过时的API权限范围

你当前使用的plus.business.manage是旧版的权限范围,现在GMB API推荐使用更完整的business.manage权限:

$client->setScopes( [ 'https://www.googleapis.com/auth/business.manage' ] );

替换后重新授权,确保权限覆盖了位置读取的需求。

3. 调用listAccountsLocations时未指定readMask参数

GMB API的很多列表接口需要明确指定readMask来定义要返回的字段,否则可能返回空数据。修改你的调用代码,添加该参数:

$locationsList = $locations->listAccountsLocations(
    $account->name,
    ['readMask' => 'name,title,address'] // 指定你需要的字段,比如名称、标题、地址等
)->getLocations();

你可以根据需求调整readMask的字段,可在Google开发者文档中搜索Accounts.locations.list查看完整字段列表。

4. 添加错误捕获排查具体问题

建议在API调用处添加异常捕获,这样可以看到具体的错误信息,帮助定位问题:

try {
    $locationsList = $locations->listAccountsLocations(
        $account->name,
        ['readMask' => 'name,title']
    )->getLocations();
    
    // 打印返回结果,确认是否有数据
    print_r($locationsList);
} catch (Google_Service_Exception $e) {
    echo "API调用错误: " . $e->getMessage();
    print_r($e->getErrors());
} catch (Exception $e) {
    echo "其他错误: " . $e->getMessage();
}

比如如果是权限不足,错误信息会明确提示PERMISSION_DENIED,如果是参数错误会提示INVALID_ARGUMENT。

5. 确认Google Cloud Console的配置

  • 确保你的Google Cloud项目已经启用了Google My Business API(在Cloud Console的API库中搜索并启用)
  • 确认服务账号的密钥文件没有过期,并且正确加载到了代码中

按照以上步骤逐一排查,应该能解决无法获取位置的问题。当你成功获取到位置后,后续的评论获取逻辑就可以正常运行了。

内容的提问来源于stack exchange,提问作者Keith Petrillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:35:51