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

python-social-auth require email field

我的问题是,PSA 将允许用户在通过 Facebook 注册时禁用他们的电子邮件地址,这会导致整个站点出现问题。有什么方法可以在注册时要求提供这些数据吗?

我可以使用简单的

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

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

签出 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)

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