Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: Обновить не удалось с ошибкой 400 Bad Request.Поставщик удостоверений не поддерживает обновление, или пользователь не вошел в систему с достаточными разрешениями.
Поскольку вы используете аутентификацию клиентского потока, вы не можете использовать RefreshUserAsync()
для обновления MobileServiceAuthenticationToken
,Ваш мобильный бэкэнд не кэширует связанные access_token
и refresh_token
для обновления токена аутентификации.
Есть ли способ проверить это?(поскольку срок действия токена 3 месяца.) Спасибо за помощь!
AFAIK, срок действия MobileServiceAuthenticationToken
по умолчанию равен одному часу, вы можете использовать https://jwt.io/ для декодированиясвой токен и проверьте свойство exp
, затем используйте https://www.epochconverter.com/ для преобразования вашей временной метки в человеческую дату.
По вашему требованию вы можете следить за блогом Адриана Холла о Caching Tokens и обратитесь к IsTokenExpired
методу для декодирования вашего аутентификационного токена и отметьте exp
, а затем вручную обновите аутентификационный токен.
Насколько я понимаю, есть два подхода для достижения вашей цели:
Вам необходимо кэшировать facebook access_token
на стороне вашего мобильного клиента, после того как вы вручную проверили идентификационный токен и обнаружили, что он истек, вы можете вручную выполнить следующий код для обновления токена и явно обновить локальный кеш.
var user = await client.LoginAsync(MobileServiceAuthenticationProvider.Facebook, token).ConfigureAwait(false);
Примечание: Ваш фейсбук access_token имеет дату окончания срока действия, поэтому, если ваш access_token exпосле этого, вам нужно снова заставить пользователя войти в Facebook, прежде чем получить новый аутентификационный токен.
Или вы можете создать свою пользовательскую конечную точку для обновления аутентификационного токена и явно задать длительный срок жизни для нового аутентификационного токена, подробноможет последовать аналогичная проблема . Примечание: Для обработки истечения срока действия на стороне клиента необходимо обновить токен до истечения срока действия вашего локального аутентификационного токена.