Я работаю над приложением, которое позволяет пользователям регистрироваться либо вручную с помощью комбинации электронной почты и пароля, либо через facebook ИЛИ регистрацию в Google.
Я использую их соответствующие библиотеки на iOS, что дает мне токен от FB или Google, в зависимости от того, что они выберут. Приложение отправляет этот токен на мой сервер. На стороне сервера я проверяю токен через соответствующую третью сторону и, если она действительна, я получаю идентификатор пользователя от третьей стороны. Я использую этот идентификатор для идентификации пользователя в моей базе данных. В базе данных я также храню электронную почту этого пользователя.
Моя проблема возникает, когда пользователь, скажем, удалил приложение и переустановил его, а затем забывает, зарегистрировался ли он через facebook или google. Допустим, они изначально зарегистрировались с помощью Facebook, а теперь, после переустановки, нажимают кнопку входа через Google. Теперь, когда серверная часть получает новый токен Google и я его проверяю, я получаю идентификатор пользователя от Google. Поскольку этот идентификатор отличается от исходного идентификатора пользователя, зарегистрировавшегося через facebook, технически это совершенно другой пользователь. Кроме того, поскольку адрес электронной почты исходного пользователя уже сохранен в базе данных, я не могу создать дубликата пользователя с тем же адресом электронной почты.
Как правильно поступить в этой ситуации? Должен ли пользователь показывать информационную ошибку, говорящую ему, что он изначально зарегистрировался через Facebook, и он должен использовать это?