AWS Cognito с Facebook и Google: уникальный IdentityId?

В моем веб-приложении я хочу разрешить пользователям входить в систему с помощью 2 возможных поставщиков (Facebook, Google) и получать учетные данные с помощью AWS Cognito.

Насколько я понимаю, если пользователь ([email protected]) входит в систему, используя свою учетную запись Facebook, Cognito IdentityId не будет таким, как если бы он вошел в систему, используя свою учетную запись Google.

Предполагая, что пользователь использует один и тот же адрес электронной почты ([email protected]) для входа в свои учетные записи Facebook и Google, как я могу убедиться, что у этого пользователя есть один уникальный IdentityId в Cognito ?

Я бы не хотел, чтобы у пользователя было 2 разных IdentityId. Было бы неплохо, если бы я мог связать [email protected] с одним IdentityId.


person Lankssk    schedule 16.01.2016    source источник


Ответы (1)


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

Однако можно сказать, что они связаны. Если бы этот же пользователь вошел в facebook на одном устройстве, он получил бы идентификатор A. Если бы они затем связали идентификатор A со своей учетной записью Google, включив токен входа для обоих при общении с Cognito, тогда Cognito узнал бы, что они связаны, и любая будущая аутентификация с одним из двух провайдеров даст один и тот же идентификатор.

Это немного отличается, если и Facebook, и Google уже были связаны с идентификатором до того, как Cognito было сказано связать их - в этом случае используемый идентификатор может быть любым из двух.

person Jeff Bailey    schedule 16.01.2016
comment
О последнем абзаце: можно ли объединить два разных идентификатора IdentityId, если учетные записи Facebook и Google сгенерировали разные идентификаторы IdentityId? - person Lankssk; 17.01.2016
comment
Да, это так. Cognito не знает, кто создал учетную запись у провайдера, поэтому для этого все, что вам нужно сделать, это один раз передать Cognito токен входа от обоих провайдеров в вызове аутентификации (то есть GetId). После того, как это будет сделано один раз, они объединятся, и одно из удостоверений будет отключено, а другое будет тем, которое вы будете использовать. - person Jeff Bailey; 17.01.2016
comment
И будущие вызовы с одним из двух токенов (или с обоими) будут отображаться обратно в этот объединенный идентификатор. - person Jeff Bailey; 17.01.2016
comment
Спасибо за это, но как получить токены входа для обоих провайдеров одновременно? - person Shaho; 24.06.2020