Symfony6+PHP8环境下Google Ads API V22.0.0 PHP示例运行报404
解决Google Ads API V22.0.0调用searchStream接口返回404的问题
问题根源
你代码里用的是V14版本的Google Ads客户端库,但安装的API依赖是V22.0.0,版本不匹配导致请求的API路径还是/v14/...,而V22对应的API版本路径是/v15/...,服务器找不到旧路径就返回404。
解决步骤
替换客户端库命名空间
把代码中所有V14的命名空间替换成V15,因为Google Ads API V22对应客户端库的V15版本。确认依赖版本
检查composer.json里googleads/google-ads-php的版本是否为22.0.0,如果不是,执行以下命令更新:composer require googleads/google-ads-php:22.0.0修正后的完整代码
use Google\Ads\GoogleAds\Lib\V15\GoogleAdsClientBuilder; use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder; use Google\Ads\GoogleAds\V15\Services\GoogleAdsServiceClient; use Google\Ads\GoogleAds\V15\Services\SearchGoogleAdsStreamRequest; $developerToken = 'xxxx'; $clientId = 'yyyy'; $clientSecret = 'zzzz'; $refreshToken = 'dddd'; $loginCustomerId = 'vvvv'; try { $oAuth2Credential = (new OAuth2TokenBuilder()) ->withClientId($clientId) ->withClientSecret($clientSecret) ->withRefreshToken($refreshToken) ->build(); $googleAdsClient = (new GoogleAdsClientBuilder()) ->withDeveloperToken($developerToken) ->withOAuth2Credential($oAuth2Credential) ->withLoginCustomerId($loginCustomerId) ->build(); $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); $query = 'SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id'; $stream2 = $googleAdsServiceClient->searchStream($loginCustomerId, $query); foreach ($stream2->iterateAllElements() as $googleAdsRow) { // 处理返回数据,示例打印结果 printf("Campaign ID: %d, Name: %s\n", $googleAdsRow->getCampaign()->getId(), $googleAdsRow->getCampaign()->getName()); } } catch (\Google\ApiCore\ApiException $e) { $this->_logCall(self::LOG_GOOGLE_ADS, 'ERREUR:',$e->getBasicMessage()); }
补充说明
Google Ads API的客户端库版本和官方API版本是严格对应的:
- API V22 → 客户端库v15
- API V21 → 客户端库v14
必须保证代码中使用的命名空间版本与安装的依赖版本完全匹配,否则会出现路径不匹配的错误。
内容的提问来源于stack exchange,提问作者And Row ID
相关产品推荐
相关产品推荐

