Как работает Аллах, когда пользователь входит через социальную регистрацию - PullRequest
4 голосов
/ 13 декабря 2011

Я пытался использовать django-allauth для предоставления социальной регистрации, но у меня возникают проблемы при настройке профилей для пользователя.Нет документации django-allauth, в которой

  1. указано, как создается учетная запись пользователя django, когда пользователь входит в систему с помощью третьей стороны, такой как facebook
  2. Какое имя пользователя назначено для этогопользователь и какой пароль используется.
  3. Некоторые сторонние поставщики, такие как Facebook, предоставляют много информации о пользователе, например, его имя, адрес электронной почты и т. д., как мы можем получить их и сохранить в учетной записи / профиле пользователя

Если кто-то использовал Аллаута в своих проектах и ​​может предоставить некоторые детали, это было бы очень полезно.

1 Ответ

10 голосов
/ 07 февраля 2012

Я использую django_allauth в моем проекте.

(1) Как создается учетная запись пользователя django, когда пользователь входит в систему с помощью третьей стороны, например, Facebook?

Вы должны взглянуть на:

  1. ваша административная панель и посмотрите, что произойдет, когда кто-нибудь войдет в систему.
  2. allauth.facebook.views.login и попытайтесь отследить процесс входа в систему

Это что-то вроде этого (в нескольких словах):

  1. Когда пользователь входит на ваш сайт через свои учетные данные Facebook, ему предоставляется токен доступа
  2. Этот токен сохраняется в таблице FACEBOOK_ACCESS_TOKENS (вы можете увидеть его на панели администратора)
  3. С помощью этого токена доступа и с помощью Facebook GraphApi мы узнаем его social_id
  4. Когда мы узнаем его social_id - мы можем получить его учетную запись Facebook из нашей базы данных
  5. Если мы еще не сохранили его в БД - мы сохраняем учетную запись Facebook в таблице FACEBOOK_ACCOUNTS (учетные записи Facebook в панели администратора)
  6. Затем мы создаем пользователя в таблице USERS с данными, присутствующими в учетной записи Facebook. (вы можете увидеть нового пользователя в разделе «Пользователи» на панели администратора).


(2) Какое имя пользователя назначено этому пользователю и какой пароль используется?

Как я упоминал ранее, с помощью Facebook GraphApi мы получаем имя пользователя Facebook, и оно присваивается профилю пользователя как User.username.


(3) Некоторые сторонние поставщики, такие как Facebook, предоставляют много информации о пользователе, например, его имя, адрес электронной почты и т. Д. Так как мы можем получить их и сохранить в учетной записи / профиле пользователя?

Опять же - Facebook GraphApi - он получает необходимую информацию.

Я встроил django_allauth в свой сайт, и он работает правильно. Я буду рад ответить (если смогу), если у вас есть еще вопросы.


РЕДАКТИРОВАТЬ - Для поддержки аватара ...

Я думаю, вы должны взглянуть на настройки django_allauth и особенно на:

SOCIALACCOUNT_AVATAR_SUPPORT (= 'avatar' in settings.INSTALLED_APPS)

Включить поддержку django-avatar. Когда включено, изображение профиля пользователь копируется локально в django-аватар при регистрации.

...