Postman可运行的Google Merchant Center GET请求在PHP Curl中失效求助
Google Merchant Center接口请求失败排查方案
下面是按优先级排序的排查步骤和修正方案:
- 第一步:添加Curl错误检测逻辑,先定位具体错误类型
你当前代码没有捕获curl层面的错误,无法区分是网络问题、证书问题还是接口返回的业务错误,先添加错误检测代码定位问题。 - 第二步:检查Bearer Token有效性
谷歌OAuth2生成的Bearer Token默认有效期仅1小时,你代码中硬编码了固定Token,大概率已经过期。Postman如果配置了自动OAuth2授权会自动刷新Token,这是Postman正常、代码请求失败的高频原因。 - 第三步:调整Curl配置适配接口规则
- 你当前设置了
CURLOPT_FOLLOWLOCATION => false,谷歌接口可能返回3xx重定向,Postman默认自动跟随重定向,建议将该参数改为true - 本地PHP环境如果未配置根CA证书,curl发起HTTPS请求时会校验失败,Postman内置了根证书列表不会触发该问题,可临时添加关闭SSL校验的参数测试(生产环境建议配置正确CA证书,不要关闭校验)
- 补充
Accept: application/json请求头,避免接口返回非预期格式
- 修正后的测试代码如下:
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://shoppingcontent.googleapis.com/content/v2.1/436306321/products', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, // 修改为跟随重定向 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', // 临时关闭SSL校验,仅测试用,生产环境请删除这两行、配置正确的CA证书 CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_HTTPHEADER => array( 'Authorization: Bearer 这里替换成你最新生成的有效Token', 'Accept: application/json' // 补充Accept头 ), )); $response = curl_exec($curl); // 新增Curl错误检测 if(curl_errno($curl)){ echo 'Curl错误:' . curl_error($curl); } curl_close($curl); echo $response;
- 长期使用建议:不要硬编码Bearer Token,接入谷歌官方的PHP版API客户端,动态获取有效期内的授权Token。
内容的提问来源于stack exchange,提问作者lili tiem
相关产品推荐
相关产品推荐

