API контактов Google Oauth2 возвращает недопустимый токен: срок действия токена без сохранения состояния истек через час

Что не так с моей настройкой?

Я использую django-allauth для регистрации в социальных сетях и недавно добавил в него контакты. Дела идут нормально. Теперь он запрашивает разрешение на управление контактами, и я могу получить контактные данные пользователей через API.

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

Однако я все еще могу войти на сайт, и токен не меняется. Однако, когда я выхожу из системы и снова вхожу в систему, токен меняется, и я снова могу получать контакты, используя этот токен, в течение одного часа.

В чем проблема? Что мне не хватает?


person Rohit    schedule 24.04.2016    source источник


Ответы (1)


Видите ли, когда вы входите на веб-сайт, вы, вероятно, используете файлы cookie. Таким образом, в основном вы можете использовать один и тот же сеанс, и на самом деле API не вызывается.

Когда вы входите в систему в режиме инкогнито или в другом браузере, этот файл cookie нельзя использовать, поэтому на этот раз вызывается API. По этой причине токен меняется.

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

Что вам нужно сделать, так это просмотреть коды django-allauth и выяснить, как они используют токен. Вы также должны знать, что для получения токена обновления в вашей конфигурации должен быть включен автономный доступ.

person sprksh    schedule 03.05.2016