Нормальна ли практика идентефикации юзера по почте при условии того что провайдеров для логина больше одного?

Например у меня в проекте возможен логин через два провайдер. Гугл и фейсбук.

Я не особо понимаю как это должно работать если почта на фейсбук и гугл одна и та же.

1. Юзер логинится через фейсбук, я получаю его имя, эмейл, фотку. Вывожу ее, сохраняю данные юзера себе в бд, чтобы потом например получить список "избранного" этого юзер
2. Этот же юзер, выходит из аккаунт и логинится через гугл с такой же почтой которая былы привязана и к фейсбуку, в итоге я не сохраняю юзера в бд, так как такая почта уже существует

В итоге все дальнейшие манипуляции с аккаунтом юзера я провожу через почту, то есть идентифицирую его через почта.
Юзер нажал лайк, я делаю запрос в бд с почтой текущего юзера и записываю текущий пост как лайкнутый.

Все что я описал это корректная практика?Или как делают обычно?

Дополнительно:

Эти openid провайдеры (гугл, фейсбук, одноклассники и проч) любят по желанию задней пятки блокировать "приложение", к которому привязана аутентификация.
В результате ваши пользователи в один прекрасный день не смогут залогиниться.
А если зарегать новое "приложение", то эти же пользователи будут там проиходить под новыми айдишниками (ну внутри гугла, а в этом openid, т.е. для вас они будут выглядеть как новые пользователи).

  • Оффтоп, но это важно знать.
  • спасибо, но что это значит?Просто учитывать такой риск или вы предлагаете идентефицировать не по айдишнику?
  • Я ничего не предлагаю. Просто делюсь опытом.
    Но исходя из вышеописанного я бы при авторизации всегда бы запрашивал у oauth-провайдера email и идентифицировал бы юзера уже по нему. Заодно и есть куда письмо послать в случае чего. В т.ч. в случае восстановления доступа к аккаунту.
  • Например у меня в проекте возможен логин через два провайдер. Гугл и фейсбук.

    не все соцсети отдают почту юзеров, но все отдают его уникальный идентификатор внутри своей сети. Поэтому ты должен сохранять информацию об внешнем id и из какой он соцсети. А еще юзер может поменять почту, в одной соцсети, а в другой нет, и т.п.

    Юзер нажал лайк, я делаю запрос в бд с почтой текущего юзера и записываю текущий пост как лайкнутый.

    нет, почту ты используешь только для идентификации юзера, вся внутренняя работа уже не с ней, а с внутренними id.

    • прблема в том что текущие провайдеры почему то не отдают мне айди
    • окей, ошибка. Получаю айди, но только при логине, то есть во время сессии я его уже получить не могу, то есть мне его надо где то сохранить, но где обычно хранят такие данные?
    • godsplane, в базе хранят
    • godsplane, по идее ты можешь с полученным токеном запросить снова личные данные пользователя.

     

    Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.

     

      • Нормальна ли практика идентефикации юзера по почте при условии того что провайдеров для логина больше одного?Есть ответ
      • 07.04.2024
      Ответить

      Идентификация пользователя по электронной почте является распространенной практикой во многих веб-сервисах. Однако, при наличии нескольких провайдеров для входа (например, Google, Facebook, Twitter), важно оценить некоторые важные моменты.

      1. Удобство для пользователя: Использование электронной почты для идентификации пользователя является удобным и привычным способом для большинства пользователей. Они могут использовать одну и ту же электронную почту для входа в различные провайдеры.

      2. Безопасность: Важно обеспечить безопасность данных пользователей при использовании электронной почты для идентификации. Рекомендуется использовать дополнительные механизмы аутентификации, такие как двухфакторная аутентификация, чтобы защитить учетные записи пользователей.

      3. Конфиденциальность: При использовании электронной почты для идентификации пользователя необходимо обеспечить конфиденциальность личных данных. Важно хранить информацию о пользователях в зашифрованном виде и следовать стандартам безопасности данных.

      4. Возможность выбора провайдера: Пользователям следует предоставить возможность выбора провайдера для входа, если у них есть несколько учетных записей. Например, они могут использовать Google для одной учетной записи и Facebook для другой.

      Итак, использование электронной почты для идентификации пользователя при наличии нескольких провайдеров для входа может быть нормальной практикой, но важно учитывать аспекты безопасности, конфиденциальности и удобства для пользователей. Важно также следовать лучшим практикам в области защиты данных и обеспечения безопасности учетных записей пользователей.

      // Пример использования электронной почты для идентификации пользователя
      $user_email = "user@example.com";
      $password = "password123";
       
      // Проверка существования пользователя в базе данных
      if (check_user_exists($user_email)) {
          // Проверка правильности пароля
          if (check_password($user_email, $password)) {
              // Вход пользователя в систему
              login_user($user_email);
              echo "Пользователь успешно вошел в систему";
          } else {
              echo "Неверный пароль, попробуйте снова";
          }
      } else {
          echo "Пользователь с такой электронной почтой не найден";
      }

    Оставить комментарий