Как принудительно обновить токен аутентификации с помощью AWS Amplify Android?
Я не могу найти информацию о том, как обновить токены доступа с помощью библиотеки AWS Amplify для Android.
В документации и на некоторых форумах предполагалось, что все происходит автоматически. Но в моем случае это не так.
В приложении я использую Amplify Auth для аутентификации пользователей, а также Amplify Storage и Amplify Predictions.
Чтобы запросить мою базу данных, я использую
DynamoDBMapper
из AWS SDK для Android.
До сих пор я пытался принудительно обновить токены следующими способами:
auth.currentUser
AWSMovileClient.getInstance().tokens
AWSMobileClient.getInstance().currentUserState()
Amplify.Auth.fetchAuthSession()
Ни один из первых трех не работал.
fetchAuthSession(...)
это техника, которую я использую сейчас, но она асинхронна и требует времени для получения результата. Мне нужно запустить его синхронно в моем
splash activity
. В противном случае, если он асинхронный и есть запрос к базе данных, который зависит от его результатов, вызов базы данных вызовет
NotAuthorizedException
.
Кроме того, для токена обновления можно установить значение 10 лет, так что на данный момент это не проблема. Проблема в том, что новый токен доступа не создается после истечения срока действия старого, и я не могу выполнить никаких действий с аутентифицированным пользователем.
Есть ли способ быстро проверить, действительны ли токены, а если нет, обновить их?
1 ответ
Я взглянул на исходный код «fetchauthsession» и изменил асинхронный режим на синхронный.
https://github.com/shichonghuotian/Amplify-токен-синхронизация