Как принудительно обновить токен аутентификации с помощью AWS Amplify Android?

Я не могу найти информацию о том, как обновить токены доступа с помощью библиотеки AWS Amplify для Android.

В документации и на некоторых форумах предполагалось, что все происходит автоматически. Но в моем случае это не так.

В приложении я использую Amplify Auth для аутентификации пользователей, а также Amplify Storage и Amplify Predictions.

Чтобы запросить мою базу данных, я использую DynamoDBMapper из AWS SDK для Android.

До сих пор я пытался принудительно обновить токены следующими способами:

  1. auth.currentUser
  2. AWSMovileClient.getInstance().tokens
  3. AWSMobileClient.getInstance().currentUserState()
  4. Amplify.Auth.fetchAuthSession()

Ни один из первых трех не работал. fetchAuthSession(...)это техника, которую я использую сейчас, но она асинхронна и требует времени для получения результата. Мне нужно запустить его синхронно в моем splash activity. В противном случае, если он асинхронный и есть запрос к базе данных, который зависит от его результатов, вызов базы данных вызовет NotAuthorizedException.

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

Есть ли способ быстро проверить, действительны ли токены, а если нет, обновить их?

1 ответ

Я взглянул на исходный код «fetchauthsession» и изменил асинхронный режим на синхронный.

https://github.com/shichonghuotian/Amplify-токен-синхронизация

Другие вопросы по тегам