调用Google PHP API获取位置洞察返回INVALID_ARGUMENT无效参数错误求助
错误触发原因
这个400 INVALID_ARGUMENT错误是请求参数不符合Google My Business API的要求导致的,你的代码存在以下几个高频错误点:
- 时间范围不合法:你动态生成的结束时间是当日0点,若当前为当月1日,会出现开始时间与结束时间完全一致的空范围;另外Google洞察数据不支持查询当日未同步完成的实时数据,时间跨度也不能超过18个月。
- Metric参数无效:新版API已经废弃了
ALL作为指标通配符的取值,必须明确指定需要查询的具体指标,例如查询总搜索量要传QUERIES_TOTAL。 - 字段格式不匹配:
setMetricRequests方法要求传入MetricRequest对象的数组,你当前传入的是单个对象,不符合参数要求。 - location名称格式错误:需确认
$location->name的取值为标准格式accounts/{账户ID}/locations/{门店ID},不能是纯ID或其他自定义格式。
排查修复方案
按以下步骤逐步验证修复:
- 先修复metricRequests参数格式,将
$basicRequest->setMetricRequests($metricRequests);
修改为
$basicRequest->setMetricRequests([$metricRequests]);
- 替换无效的ALL指标,改为明确的单个指标测试,例如:
$metricRequests->setMetric("QUERIES_TOTAL");
- 固定测试用的时间范围,避免动态时间的异常情况,比如固定查询上个月的完整数据:
$firstDay = date("Y-m-d\TH:i:s.000\Z", strtotime("first day of last month 00:00:00")); $lastDay = date("Y-m-d\TH:i:s.000\Z", strtotime("last day of last month 23:59:59"));
- 打印请求参数验证格式:在调用
reportInsights前打印$reportLocationInsightsRequest的完整结构,确认所有字段格式符合API要求。
内容的提问来源于stack exchange,提问作者Emoyaki
相关产品推荐
相关产品推荐

