Я использую 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);
Я не хочу обновлять токен всевремя (это мешает другому процессу).
Поиск информации Я обнаружил, что он должен отправлять токен обновления только в первый раз.Я что-то упустил?