调用Google Business Profiles verificationTokens.generate接口遇404错误求助
Google My Business验证接口404错误排查方案
调用POST请求访问https://mybusinessverifications.googleapis.com/v1/verificationTokens:generate接口,请求体携带正确的Location对象却返回404 Not Found错误,该URL和官方文档一致,代码逻辑和其他正常接口一致:
$account = $this->getAccounts('XXXX'); $filter = []; $filter['store_code'] = 'YYY'; $locations = $this->getLocations($account, $filter); $location=$locations[0]; $response = $client->authorize()->post('https://mybusinessverifications.googleapis.com/v1/verificationTokens:generate', ['location' => $location]); dd($response);
官方文档仅列出PERMISSION_DENIED和FAILED_PRECONDITION两种错误,但实际遇到404,可能的原因如下:
- API未单独启用:这个验证接口属于Google My Business Verifications API,和基础的My Business API是分开的,必须在Google Cloud Console里单独启用该API。很多人只开了基础API,导致接口路径不存在。
- Location参数格式错误:接口要求的是Location的资源名称(格式为
accounts/{accountId}/locations/{locationId}),不是完整的Location对象。检查$locations[0]返回的内容,应该提取其中的name字段传入,而不是整个对象。 - 请求格式不正确:如果用的是Guzzle这类客户端,直接传数组可能会被当作表单数据发送,而非JSON。需要手动设置
Content-Type头,并把数据用json参数传递,确保是JSON格式请求:
$response = $client->authorize()->post( 'https://mybusinessverifications.googleapis.com/v1/verificationTokens:generate', [ 'headers' => ['Content-Type' => 'application/json'], 'json' => ['location' => $location['name']] ] );
- Location资源状态异常:获取到的Location可能属于未绑定当前授权账号的资源,或者该Location已被删除/处于未激活状态,导致接口无法找到对应资源,返回404。
内容的提问来源于stack exchange,提问作者dusoft
相关产品推荐
相关产品推荐

