Как использовать Google Client PHP API и Google Adwords API в одной форме? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь создать форму, в которой люди могут выбрать свою учетную запись Google Analytic и учетную запись Google Adwords. Я сделал с Google Analytic, но проблема возникает, когда я добавляю Google Adwords API. Вот ошибка

PHP Fatal error:  Uncaught exception 'InvalidArgumentException' with message 'Cannot have both service account flow and installed/web application flow credential values set.' in /xxx/vendor/googleads/googleads-php-lib/src/Google/AdsApi/Common/OAuth2TokenBuilder.php:209

Я попытался получить clientId и clientSecret от Google API Client, а затем использовать их в OAuth2TokenBuilder от Google Adwords. Также я уже добавляю область действия https://www.googleapis.com/auth/adwords, когда устанавливаю клиента.

class My_Google_Analytics{
    public $client;
    public $analytics;

    public function __construct(){
        $this->client = new Google_Client();
        $this->client->setAuthConfig(SA_PLUGIN_PATH . '/client_secret.json');
        $this->client->addScope(Google_Service_Oauth2::USERINFO_PROFILE);
        $this->client->addScope(Google_Service_Oauth2::USERINFO_EMAIL);
        $this->client->addScope(Google_Service_Analytics::ANALYTICS);
        $this->client->addScope(Google_Service_Analytics::ANALYTICS_MANAGE_USERS);
        $this->client->addScope('https://www.googleapis.com/auth/adwords');
        $this->_connect();
    }
}

class My_Google_Adwords{

    public $session;

    public function __construct($email, $client_id, $client_secret){
        $oAuth2Credential = (new OAuth2TokenBuilder())
                            ->fromFile(SA_PLUGIN_PATH .'/adsapi_php.ini')
                            ->withClientId($client_id)
                            ->withClientSecret($client_secret)
                            ->withImpersonatedEmail($email)
                            ->withJsonKeyFilePath(SA_PLUGIN_PATH . '/json-key-file.json')
                            ->withScopes('https://www.googleapis.com/auth/adwords')
                            ->build();
        $soapSettings = (new SoapSettingsBuilder())
                ->withSslCaFile(SA_PLUGIN_PATH . '/cacert.pem')
                ->build();
        $this->session = (new AdWordsSessionBuilder())
                ->fromFile(SA_PLUGIN_PATH .'/adsapi_php.ini')
                ->withOAuth2Credential($oAuth2Credential)
                ->build();
    }
}

Я уже установил ключ разработчика в adsapi_php.ini

Я хочу получить список идентификаторов клиентов Google Adwords, которыми этот подключенный аккаунт управляет с помощью класса CustomerService. Но, по крайней мере, я должен сначала подключиться к Google Adwords. Я все еще новичок в этом Google API, поэтому я буду благодарен за любые комментарии здесь. Спасибо

...