Я делаю то же самое, и мое решение состоит в том, чтобы сопоставить адреса электронной почты, которые вы получаете от этих соответствующих API.
Для Facebook вам нужно специальное разрешение от конечного пользователя, чтобы получить зарегистрированный там адрес электронной почты. Вы делаете это, добавляя &scope=email
к первому запросу oauth.
Недостатком является то, что вам необходимо получить это разрешение от конечного пользователя, и оно может отклониться. Другим недостатком является то, что пользователям необходимо использовать одинаковые адреса электронной почты для Google, Facebook и Twitter.
Преимущество состоит в том, что пользовательские записи объединяются автоматически, поэтому пользователи могут напрямую получать доступ ко всем своим данным, если они вошли в первый раз через Google, а второй раз через Facebook.
Другой подход заключается в том, чтобы вручную объединить их данные, заставив их войти в Google, когда они уже вошли через Facebook. Затем вы можете сделать вывод, что это один и тот же пользователь, даже если они используют разные адреса электронной почты для обоих. Но это более утомительный подход, так как вам все равно нужно объединить пользовательские данные приложения из обеих учетных записей.