python-social-auth需要电子邮件字段

时间:2015-01-31 08:13:34

标签: django python-social-auth

我的问题是,PSA会允许用户在通过Facebook注册时禁用他们的电子邮件地址,这会在整个网站范围内造成问题。注册时有没有办法要求这些数据?

我可以通过使用简单的

来绕过它
if no email create a fake one generated like username@no-given-email.com

但仍然是一个丑陋的解决方法。

1 个答案:

答案 0 :(得分:1)

勾选Python Social Auth docs

让你开始......

你在settings.py中的

SOCIAL_AUTH_PIPELINE = (
    ...
    'users.social_stuff.create_user',
    ...
)

然后在users / pipeline / create_user.py

def create_user(backend, details, response, user=None, *args, **kwargs):
    email = details.get('email')[:255]

    EMAIL_RE = re.compile(r'[^@]+@[^@]+\.[^@]+')

    if not EMAIL_RE.match(email):
        # return to a separate page and display an error
        response = HttpResponseRedirect('/some-url/') 
        messages.error(request, "An email address is required")
        return response 
    else:
        # logic to create a user

您也想知道是否真的需要电子邮件。如果没有,只需设置

email = models.EmailField(blank=True)

并保存用户并礼貌地请他们稍后填写表格