Я использую API Google Oauth2 для подключения к Google Ads и становлюсь только одним токеном обновления, когда моя учетная запись @ gmail.com имеет доступ для чтения к двум различным учетным записям Google Ads.
У меня есть учетная запись @gmail.com. Эта учетная запись имеет доступ для чтения к учетным записям Google Ads b@gmail.com и c@gmnail.com.
Когда я создаю два подключения к Google Ads с электронной почтой a@gmail.com для учетных записей b @ gmail.com и c@gmail.com, тогда я получаю только один токен обновления для первого соединения и ни один токен обновления для второго соединения. Почему? Как мне это сделать, чтобы стать 2 токенами обновления для каждого соединения? Единственный способ стать токеном обновления для второго подключения - перейти на мою учетную запись a@gmail.com, вручную закрыть доступ к моему приложению и снова подключиться с помощью c@gmail.com. Но тогда b@gmail.com больше не имеет токенов обновления.
код:
$oauth2 = new OAuth2(
[
'authorizationUri' => $this->container->getParameter('oauth2.google.adwords.authorizationUri'),
'tokenCredentialUri' => $this->container->getParameter('oauth2.google.adwords.tokenCredentialUri'),
'redirectUri' => $this->container->getParameter('domain.system') . $this->container->getParameter(
'oauth2.google.adwords.redirectUri.advertiser'
),
'clientId' => $this->container->getParameter('oauth2.google.adwords.clientId'),
'clientSecret' => $this->container->getParameter('oauth2.google.adwords.clientSecret'),
'scope' => $this->container->getParameter('oauth2.google.adwords.scope')
]
);
// Create a 'state' token to prevent request forgery.
// Store it in the session for later validation.
$randomState = sha1(openssl_random_pseudo_bytes(1024)) . '---' . $accountId;
$oauth2->setState($randomState);
// Redirect the user to the authorization URL.
$config = [
// Set to 'offline' if you require offline access.
'access_type' => 'offline',
'approval_prompt' => 'force'
];
// redirect to google ads
return new RedirectResponse($oauth2->buildFullAuthorizationUri($config));