В моем веб-приложении, когда пользователь нажимает кнопку входа в систему, я хочу позволить ему выбрать адрес электронной почты, а затем проверить, есть ли у меня в моей базе данных токен обновления (для областей, которые мне нужны), и если у меня естьобновить маркер Я хочу войти в систему пользователя, в противном случае я хочу сначала запросить разрешение на автономный доступ, и только после того, как пользователь даст мне разрешение на автономный доступ (код, который будет заменен на маркер обновления), войдите в систему.
Проблема в том, что при первом входе в систему все работает нормально, но после того, как пользователь выходит из системы, а затем снова входит в систему, генерируется новый токен доступа, когда я использую gapi.auth2.getAuthInstance().signIn()
для входа в систему.
После второго входа в систему происходит обновлениетокен, сохраненный при первом входе в систему, больше не работает, и запросы, сделанные с этим токеном, возвращают ошибку:
error: 'invalid_grant',
error_description: 'Token has been expired or revoked.',
Вот почему я хочу как-то получить электронное письмо, с которого пользователь хочет войти, проверить, есть ли у менятокен обновления для этого электронного письма (без отзыва токена), а затем позвольте пользователю войти или сначала запросить токен обновления.
Есть лида, чтобы достичь того, что мне нужно?Я попытался передать пустую область в функции gapi.client.init
и реальные области в функцию grantOfflineAccess
, но пустая область действия недопустима для функции init, как кажется.
Также я не уверен, что этоиз-за создания нового токена доступа при входе в систему, потому что почему новый токен доступа должен сделать старый токен обновления недействительным?
Заранее благодарим за любую помощь.