1

Я пытаюсь получить refresh token с сервера аутентификации Google для использования с API Google Analytics при аутентификации на стороне сервера с помощью Service Account Credential с использованием официального Google PHP client library.PHP сервер Google Analytics для сервера OAuth получить токен обновления

Я могу создать access token и использовать это, но в настоящее время я создаю новый токен каждый раз, когда пользователь входит на страницу. Я хотел бы уменьшить трафик и получить токен обновления, чтобы передать его функции JavaScript.

gapi.analytics.auth.authorize({ 
    serverAuth: { 
     access_token: accessToken <-refresh token is that even possible? 
    } 
}); 

Мой текущий код РНР:

$client = new \Google_Client(); 
$client->setApplicationName("Craft CMS Plugin"); 
$client->setAuthConfig($credentialPath); 
$client->setAccessType('offline'); 
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); 

$client->refreshTokenWithAssertion(); 

$this->analyticsAccount = new \Google_Service_Analytics($client); 
$token = $client->getAccessToken(); 
$accessToken = $token['access_token']; 

Но нет refresh_token. Я могу var_dump все, но я только нахожу токен доступа. Я уже пробовал это Refresh Token for Google Api Php Client, но это не сработало.

Не могли бы вы помочь мне? Как я могу его получить. Большое спасибо

ответ

1
  1. Учетные записи службы работают иначе, чем Oauth2. У них нет обновления токенов.
  2. JavaScript не может использовать обновления токенов.
  3. Почему вы беспокоитесь о трафике, учетная запись службы должна запрашивать аутентификацию только в том случае, если она понадобится один раз в час. Что касается трафика, я думаю, это незначительно.

Ответьте, что вы хотите сделать, невозможно, если учетная запись службы оставит ее.

+0

Большое спасибо, поэтому я буду хранить токен доступа и использовать его. Не могли бы вы рассказать мне, есть ли лучший способ проверить, действительно ли токен действителен, чем сравнивать время? Я бы сохранил токен + текущее время в моей базе данных и проверить, прошло ли 3600. Извините, если это глупый вопрос, но я относительно новичок в этом –

+0

, вы не должны быть клиентской библиотекой, это позаботится об этом. – DaImTo

+0

Что вы подразумеваете под этим? Я должен проверить, является ли токен доступа действительным, если я получаю его из своей базы данных, прежде чем отправлять его в функцию javascript. Если я этого не сделаю, произойдет ошибка. –

Смежные вопросы