Google API Oauth2: только один токен обновления для подключенных аккаунтов - PullRequest
0 голосов
/ 11 ноября 2019

Я использую 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));
...