Google AdWords API запрос авторизации - PullRequest
0 голосов
/ 17 февраля 2020

Я разрабатываю интеграцию между существующей системой CPA и Google AdWords. Конверсии хранятся в системе, и цель состоит в том, чтобы периодически, в качестве фоновой задачи, анализировать конверсии и отправлять их в учетную запись Google Ad пользователя.

Вот то, что я вычислил до сих пор:

  1. Мне нужно приложение Google, для которого пользователи будут предоставлять разрешение на получение данных pu sh в своей рекламной учетной записи.
  2. Мне нужны учетные данные Oauth2 для авторизации моего приложения и учетные данные пользователей для авторизации запроса API.

Процесс создания и хранения gclid сейчас не касается.

Я использую php клиентская библиотека https://github.com/googleads/googleads-php-lib, которая имеет adsapi_ php .ini файл конфигурации. В этом файле находятся токен разработчика, идентификатор клиента учетной записи менеджера и учетные данные OAuth2 (cliendId, clientSecret, refreshToken).

Однако, когда пользователь дает доступ к моему приложению через экран согласия, я создаю объект OAuth2 следующим образом:

 $oAuth2Credential = new OAuth2([
        'authorizationUri'   => 'https://accounts.google.com/o/oauth2/v2/auth',
        'tokenCredentialUri' => 'https://www.googleapis.com/oauth2/v4/token',
        'redirectUri'        => '<myEndpoint>',
        'clientId'           => '<myClientId>',
        'clientSecret'       => '<myClientSecret>',
        'scope'              => 'https://www.googleapis.com/auth/adwords'
    ]);

Если я правильно понимаю, мне абсолютно необходимы учетные данные OAuth веб-приложения в чтобы получить обратный вызов, чтобы сохранить доступ пользователя и обновить токены sh, чтобы использовать их позже в моей фоновой задаче.

1) Должны ли эти учетные данные и данные в файле adsapi_ini. php быть одинаковыми?

Я пытался сгенерировать refre sh токен для моих учетных данных веб-типа для использования в файле conf, но он не работал. Прямо сейчас я могу получить действительный ответ, когда у меня есть учетные данные для типа приложения «другие» в файле конфигурации и «веб-учетные данные» приложения в объекте Oauth2 для получения учетных данных пользователя, но я не уверен, что это правильный путь чтобы сделать это.

2) Как авторизовать запрос API на данные pu sh для учетной записи определенного пользователя?

Вот пример кода:

 $session = (new AdWordsSessionBuilder())
        ->fromFile()
        ->withOAuth2Credential($oAuth2Credential)
        ->withClientCustomerId('<client-customer-id>')
        ->build();

Как я понимаю, сессионный объект важен для построения любых дальнейших запросов, в том числе для обновления преобразований.

->fromFile() использует измененный файл конфигурации для получения моего токена и данных Auth - в основном авторизует мое приложение.

$oAuth2Credential - это объект OAuth2, содержащий определенные c данные авторизации пользователя. Проблема в том, что в документации этот объект создается компоновщиком и использует тот же метод fromFile(), и я не понимаю, какие данные он должен содержать.

Я храню access_token и refresh_token в моя база данных, и сейчас я создаю объект OAuth следующим образом:

$oAuth2Credential = new OAuth2([
        'authorizationUri'   => 'https://accounts.google.com/o/oauth2/v2/auth',
        'tokenCredentialUri' => 'https://www.googleapis.com/oauth2/v4/token',
        'redirectUri'        => '<myEndpoint>',
        'clientId'           => '<myClientId>',
        'clientSecret'       => '<myClientSecret>',
        'scope'              => 'https://www.googleapis.com/auth/adwords',
        'access_token'       => '<user_access_token>'
    ]);

Таким образом, я просто добавляю access_token к параметрам, которые я использую для получения этого токена от пользователя. Это работает, но не похоже на правильный способ сделать это.

3) Как управлять сроком действия токена пользователя?

В документации сказано, что клиентская библиотека автоматически обрабатывает токены обновления, но я не понимаю, как это будет работать в моем случае , Нужно ли передавать access_token с refresh_token в объекте OAuth при выполнении запроса API, а затем он автоматически обновляет sh, или мне нужен отдельный работник, чтобы периодически обновлять sh пользовательских токенов, чтобы сохранять их действительность?

1 Ответ

0 голосов
/ 17 февраля 2020

Вот ссылка, которая описывает, как клиент авторизует ваше приложение. https://pete-bowen.com/google-ads-api/adwords-api-authorize-multiple-users

После того, как вы сохранили идентификатор клиента, секрет и токен refre sh (где-то в безопасности), вы можете использовать класс OAuth2TokenBuilder, который имеет методы, которые позволяют вам предоставить clientId, secret и refre sh токены вместо чтения их из файла конфигурации.

...