Проблема с несколькими входами в систему через Twitter и Facebook Oauth - PullRequest
1 голос
/ 14 июня 2011

Я добавляю Twitter и Facebook для входа в тестовое приложение MVC 3, используя TweetSharp и Facebook C # SDK.

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

Что если тот же самый пользователь войдет в систему через Facebook в следующий раз? Так как Twitter не предоставляет электронную почту в их API, и поэтому у меня нет общей информации, чтобы связать учетную запись пользователя с Twitter или Facebook, я полагаю, мне нужно создать новую учетную запись пользователя для входа в Facebook? У кого-нибудь есть опыт с этим? Есть ли способы решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 20 ноября 2011

Я идентифицирую каждого пользователя внутренне с помощью уникального ключа.Я проверяю куки на ключ пользователя, когда какой-либо пользователь заходит на сайт.Если нет файла cookie, я создаю новый ключ.добавьте его в базу данных пользователей и установите новый файл cookie.Как только пользователь завершает регистрацию в первый раз, войдя в систему с любым членством Facebook, Twitter или .Net, этот ключ навсегда женат на этом пользователе.

То есть, когда существующий пользователь Twitter впервые входит в системуFacebook, мы знаем, кто они, потому что их ключ пользователя существует.По сути, это то же решение, которое предложил macou.У Macou есть плюс работы на новом компьютере или, если куки очищены, решение для куки имеет то преимущество, что не требует дополнительного ввода данных пользователем.

0 голосов
/ 08 декабря 2011

Вы не можете использовать только cookie, потому что я могу войти как Facebook, а моя жена - как твиттер, используя тот же браузер, в этом случае вам не следует связывать две учетные записи.

Я думаю, вам нужно сделать больше:

  1. Используйте cookie, затем
  2. Используйте имя / имя / логин / ..., чтобы увидеть, совпадают ли они.

Пример:

  1. Идентификатор cookie: 18459439731114330636, найти пользователя с id = 18459439731114330636. Найдено, перейти к 2, не найдено, перейти к 3.
  2. Имя пользователя / имя / фамилия / ... соответствует текущему пользователю? если да, связать аккаунты. если нет, перейдите к 3.
  3. Создать нового пользователя.
0 голосов
/ 14 июня 2011

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

Более трудная задача заключалась в другом, еслиучетная запись была создана авторизацией Facebook первым.Это означало неаккуратное объединение учетных записей.

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

Я не знаю идеальный ответ, но подумал, что поделюсь своим опытом.

...