对于Google adwords API,我使用过this library,它的工作正常。但我无法将此库与CI 2.x集成。
一些代码片段是:
if (!defined('BASEPATH')) exit('No direct script access allowed');
define('SRC_PATH', APPPATH.'/third_party/Adwords/src/');
define('COMMON_PATH', 'Google/AdsApi/Common/');
define('ADWORDS_PATH', 'Google/AdsApi/AdWords/');
define('ADWORDS_VERSION', 'v201710');
// Configure include path
ini_set('include_path', implode(array(
ini_get('include_path'), PATH_SEPARATOR, SRC_PATH))
);
// Include the AdWordsUser file
require_once SRC_PATH.ADWORDS_PATH. '/AdWordsSessionBuilder.php';
require_once SRC_PATH.ADWORDS_PATH. '/Reporting/v201710/DownloadFormat.php';
require_once SRC_PATH.ADWORDS_PATH. '/Reporting/v201710/ReportDefinition.php';
require_once SRC_PATH.ADWORDS_PATH. '/Reporting/v201710/ReportDefinitionDateRangeType.php';
require_once SRC_PATH.ADWORDS_PATH. '/Reporting/v201710/ReportDownloader.php';
require_once SRC_PATH.ADWORDS_PATH. '/ReportSettingsBuilder.php';
require_once SRC_PATH.ADWORDS_PATH. '/v201710/cm/Predicate.php';
require_once SRC_PATH.ADWORDS_PATH. '/v201710/cm/PredicateOperator.php';
require_once SRC_PATH.ADWORDS_PATH. '/v201710/cm/ReportDefinitionReportType.php';
require_once SRC_PATH.ADWORDS_PATH. '/v201710/cm/Selector.php';
require_once SRC_PATH.COMMON_PATH. '/OAuth2TokenBuilder.php';
class My_adwords {
}
获得以下致命错误:
Fatal error: Interface 'Google\AdsApi\Common\AdsBuilder' not found in /var/www/html/crm2017/application/third_party/Adwords/src/Google/AdsApi/AdWords/AdWordsSessionBuilder.php on line 38
请提出一些最佳解决方案。
<?php
//namespace Google\AdsApi\Examples\AdWords\v201710\Reporting;
if (!defined('BASEPATH')) exit('No direct script access allowed');
require __DIR__ . '/../third_party/Googleadwords/googleads-php-lib/vendor/autoload.php';
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\Reporting\v201710\ReportDownloader;
use Google\AdsApi\AdWords\Reporting\v201710\DownloadFormat;
use Google\AdsApi\AdWords\ReportSettingsBuilder;
use Google\AdsApi\Common\OAuth2TokenBuilder;
use Google\AdsApi\AdWords\v201710\cm\ReportDefinitionReportType;
use Google\AdsApi\AdWords\v201710\cm\ReportDefinitionService;
use Google\AdsApi\AdWords\v201710\cm\CampaignCriterionService;
use Google\AdsApi\AdWords\v201710\cm\Predicate;
use Google\AdsApi\AdWords\v201710\cm\PredicateOperator;
use Google\AdsApi\AdWords\v201710\cm\Paging;
use Google\AdsApi\AdWords\v201710\cm\Selector;
use Google\AdsApi\AdWords\v201710\cm\BiddingStrategyConfiguration;
use Google\AdsApi\AdWords\v201710\cm\BiddingStrategyType;
class My_adwords {
public function __construct() {
//$oAuth2Credential = new OAuth2TokenBuilder();
}
function GetCampaignsCost() {
// Get the service, which loads the required classes.
$oAuth2Credential = (new OAuth2TokenBuilder())
->fromFile()
->build();
// See: AdWordsSessionBuilder for setting a client customer ID that is
// different from that specified in your adsapi_php.ini file.
// Construct an API session configured from a properties file and the OAuth2
// credentials above.
$session = (new AdWordsSessionBuilder())
->fromFile()
->withOAuth2Credential($oAuth2Credential)
->build();
$reportFormat = DownloadFormat::CSV;
$reportQuery = 'SELECT Cost,CampaignId,BiddingStrategyType,CampaignName FROM CAMPAIGN_PERFORMANCE_REPORT DURING YESTERDAY';
// Download report as a string.
$reportDownloader = new ReportDownloader($session);
$reportSettingsOverride = (new ReportSettingsBuilder())
->includeZeroImpressions(false)
->build();
$reportDownloadResult = $reportDownloader->downloadReportWithAwql(
$reportQuery, $reportFormat, $reportSettingsOverride);
$data = $reportDownloadResult->getAsString();
}
}
我使用use而不是require_once。只需包含一次库并使用需要的类。我已经完成了以下步骤:
因此解决了。