Документация AWS не велика, мое понимание (я только что боролся с этим в течение нескольких дней), как показано ниже.Надеемся, это поможет ...
Существует два сценария, в которых Amplify / Cognito поддерживает федеративную аутентификацию.
1) Когда поставщик федеративной аутентификации используется для входа в Cognito User-бассейн .Это (насколько я могу судить) возможно только при использовании размещенного на Cognito сайта для входа в систему.Ваш код может напоминать ...
Auth.federatedSignIn({provider: 'Facebook'})
или
Auth.federatedSignIn()
2) Когда ваше приложение аутентифицируется непосредственно в Facebook (например, с помощью собственного приложения устройства), а затем аутентифицируется с помощью Cognito Identity-Pool с использованием авторизации в Facebook.Ваш код может выглядеть примерно так ...
fb.login(['public_profile', 'email'])
.then(response => {
// Some object marshalling omitted...
Auth.federatedSignIn('facebook', { token: accessToken, expires_at }, user)
})
Документация AWS часто, кажется, не различает два очень разных варианта использования, но в общем случае сценарий 1 лучше / чаще документируется.
В первом сценарии Cognito делает, как вы ожидаете, т.е. управляет истечением жизненного цикла для токенов Cognito и Facebook.Недостатком этого является то, что вам необходимо выйти из приложения для проведения проверки подлинности, которая оказывает некоторое влияние на пользовательский интерфейс, особенно для собственного или гибридного приложения.
Во втором сценарии - я считаю, что всеCognito предоставляет вам учетные данные IAM (указанной роли) в обмен на учетные данные вашего провайдера.Вы должны сами реализовать жизненный цикл токена для токена провайдера в своем приложении.
Он не дает прямого ответа на ваш вопрос, но я нашел это очень полезное руководство https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_cognito.html
I 'Мы также создаем блог, в котором подробно рассказываю, как это работает в Ionic https://martincroker.wordpress.com/2019/07/09/using-ionic-with-aws-amplify-facebook-authentication/