У меня та же проблема, и я надеялся, что умные люди на SO найдут элегантное решение. Все, что я могу думать, это:
- Пользователь входит в систему через LinkedIn
- Проверьте таблицу пользователей, чтобы узнать, есть ли у них учетная запись, использующая их идентификатор LinkedIn
- Если нет, спросите их адрес электронной почты, прежде чем войти в систему
- Когда у нас есть адрес электронной почты, проверьте, есть ли у них учетная запись, использующая их адрес электронной почты
- Если они это сделают, добавьте их LinkedIn ID к этой записи и войдите в них
- Если нет, создайте новую запись и войдите в нее
Это означает, что каждой записи пользователя нужны поля для каждой возможной учетной записи, или, более правильно, использовать таблицу ссылок, связанную с их локальным идентификатором пользователя, с записью для каждой учетной записи, в которую они входят.
Это также лишает преимущества простого входа в систему OpenId, поскольку пользователь должен зарегистрировать свою электронную почту при первом входе в систему с новой учетной записью OpenId.
Как я уже сказал, элегантно это не так, но это лучшее, что я могу придумать.