У меня есть веб-приложение React, созданное с помощью AWS Amplify Я добавил аутентификацию с пулами пользователей Cognito, я не использую имена пользователей, я выбрал логин, используя только электронную почту / телефон, мне не нужны имена пользователей, но Cognito в любом случае создает случайное имя пользователя.
Я хочу, чтобы пользователь входил в систему, используя свою электронную почту или одного социального провайдера (Facebook или Google), и это не имеет значения, они должны иметь доступ к той же учетной записи на основе электронное письмо.
Думаю, вполне нормальная практика. Однако, когда я впервые попытался войти в систему с помощью социального провайдера, я заметил, что вместо Cognito предоставляет мне ту же учетную запись, он создал новую, с другим именем пользователя и с EXTERNAL_PROVIDER в качестве статуса учетной записи в пуле пользователей
Итак, я подумал, что это может быть просто некорректное сопоставление, я перешел к сопоставлению атрибутов в разделе Федерации и увидел, что идентификатор Facebook и подписка Google были назначены имени пользователя, я попытался удалить его и для к моему удивлению, он вернулся к имени пользователя. Затем я подумал: «Я могу просто создать настраиваемый атрибут для хранения этой информации, и все будет хорошо».
Итак, я сделал это, создал один атрибут для Facebook, один для GoogleId ... попробовал еще раз ... нет, все еще возвращаюсь к имени пользователя, но без сообщения об ошибке, ничего ...
Я обратился за помощью по документации и нашел это
В настоящее время с атрибутом имени пользователя Amazon Cognito User Pools можно сопоставить только идентификатор Facebook, подписку Google, логин с помощью Amazon user_id и подписку на подписку Apple.
Если это всегда связывает идентификатор каждого провайдера с username, то нет возможности объединить эти учетные записи, я думал, что мне может понадобиться настроить пул федеративной идентификации, но, читая об этом, кажется, что он используется для предоставления ролей / разрешений IAM внешним пользователям, что я не Не хочу.
Есть идеи, как я могу этого добиться?