Аутентификация на другой платформе после создания учетной записи с помощью Apple Signin на устройстве iOS - PullRequest
0 голосов
/ 18 марта 2020

Допустим, пользователь создал учетную запись в моем приложении с помощью Apple Signin на своем устройстве iOS и решил не передавать свою электронную почту, в результате чего его учетная запись была идентифицирована по адресу электронной почты, например dpdcnf87nu@privaterelay.appleid.com и не его «реальный» адрес электронной почты, как например j. appleseed@icloud.com.

Через некоторое время пользователь переключается на устройство Android и хочет войти в мое приложение, используя свою учетную запись, это тот, который он ранее создал с помощью Apple Signin на своем устройстве iOS.

Как бы вы упростили путь пользователя, позволяя ему войти в свою учетную запись на своем новом устройстве Android, избегая при этом создания нового учетная запись, использующая другой метод, такой как Facebook Login (что неизбежно приводит к созданию новой учетной записи - другой адрес электронной почты = другой аккаунт)?

1 Ответ

0 голосов
/ 25 марта 2020

Вы должны идентифицировать пользователя по идентификатору, который OAuth возвращает не по адресу электронной почты. Вы получите тот же идентификатор на другом устройстве, даже если они выберут скрыть адрес электронной почты. Вам следует сохранить это поле для идентификации пользователей. Чтобы получить userId, вы должны запросить API оставшегося токена и получить userId: https://appleid.apple.com/auth/token. Если вы используете Apple js api , вы также получите id_token.

 var id_token = responseJSON.GetValue("id_token").ToString();
 var handler = new JwtSecurityTokenHandler();
 var jwt = handler.ReadJwtToken(id_token);
 var userId = jwt.Claims.FirstOrDefault((c) => c.Type == "sub").Value;
...