С Google API я получаю токен обновления все время (не один раз).Зачем? - PullRequest
0 голосов
/ 28 июня 2019

Я использую Google oAuth, поэтому пользователь регистрируется / входит в веб-приложение.Когда пользователь регистрируется, я получаю токен обновления (который я сохраняю в базе данных для последующего использования).Когда пользователь входит в систему (позже, может быть, на другом ПК / телефоне / что угодно), я получаю новый токен обновления (когда это не должно происходить), и я не знаю, почему.

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

Я использую Клиент Google API в своем приложении.Вот код для создания клиента:

$client = new \Google_Client;
$client->setHttpClient($guzzle);
$client->setClientId([ID]);
$client->setClientSecret([SECRET]);
$client->setRedirectUri([URL]);
$client->addScope(array([READONLY],[SEND]));
$client->setAccessType('offline');

Я получаю AuthUrl следующим образом:

$client->createAuthUrl();

https://accounts.google.com/o/oauth2/auth?response_type=code&access_type=offline&client_id=[ID]&redirect_uri=[MYURL]&state&scope=[READONLY_SEND_SCOPES]&approval_prompt=auto

Когда я получаю токен доступа, я получаюдругой токен обновления все время (не только в первый раз), поэтому я обновляю этот токен обновления в своей базе данных каждый раз, когда клиент получает доступ:

$client->authenticate($authorization_code);

Я не хочу обновлять токен всевремя (это мешает другому процессу).

Поиск информации Я обнаружил, что он должен отправлять токен обновления только в первый раз.Я что-то упустил?

...