2010-11-15 1 views
4

Я хотел бы знать, как Stackoverflow поддерживает дополнительную информацию о регистрации пользователей с помощью open-ids? Насколько мне известно, данные этих пользователей хранятся на сервере google, facebook и т. Д. (Те, чей открытый идентификатор используется). Как тогда этот сайт также хранит информацию о точках пользователя, знаках, привилегиях и т. Д.?Как stackoverflow поддерживает базу данных пользователей с открытым идентификатором Open-id?

Open id Selector, тот, который используется Stackoverflow, является клиентской библиотекой javascript, так как это возможно?

Создана ли отдельная база данных? Если да, то как? Даже регистрации нет!

Просьба представить подробную информацию о том, как это делается.

+0

Кроме того, как получить другую информацию, хранящуюся в facebook/yahoo/google, такую ​​как дата рождения, город, место и т. Д.? – Anand

ответ

4

При входе в систему сервер проверяет, есть ли у вас учетная запись. Если нет записи (это самый первый логин), сервер автоматически создаст нового пользователя и сохранит идентификатор openid.

Итак, в следующий раз, когда вы входите в систему, строка уже существует, и Stack Overflow узнает вас. Кстати, вы можете узнать идентификатор своей записи в базе данных, посмотрев URL-адрес вашего профиля.

JavaScript-openid-селектор не участвует ни в одном этом. Это просто удобная функция, которая позволяет легко выбирать поставщика openid. Вся его магия делается до того, как открывается открытая магия.

+0

Итак, могу ли я получить другую информацию о пользователе открытого идентификатора, который хранится в facebook/yahoo/google, таком как дата рождения, город, место и т. Д.? – Anand

+0

Пользователь openid может запрашивать атрибуты при перенаправлении к провайдеру openid. Поставщик/пользователь может решить, будут ли и какие атрибуты разделены. Обратите внимание, что Facebook не поддерживает openid. StackOverflow предоставляет единый пользовательский интерфейс как для openid, так и для Facebook. Это может быть хорошей идеей не реализовать openid самостоятельно, а использовать существующую библиотеку. –