python-social-auth - Django 社交身份验证如何获得许可或尝试失败

标签 python-social-auth django-socialauth

在我的应用程序中,我需要为每个用户提供一封电子邮件。 Facebook 没有将其作为公共(public)个人资料的一部分提供,这对我来说很不方便。所以我请求许可:

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email', 'public_profile']
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
    'fields': 'id,name,email', 
}

现在,用户可以选择不授予电子邮件权限。我想在没有授予此许可的情况下使注册成为不可能。我该怎么做?

最佳答案

您需要add functionauthentication pipeline强制执行电子邮件要求或引发 AuthForbidden反而。这是一个例子:

from social_core.exceptions import AuthForbidden


def email_required(backend, details, user=None, *args, **kwargs):
    if details.get('email') or user and user.email:
        return
    else:
        raise AuthForbidden(backend)

您需要将该函数放在创建用户或社交关系之前,因此在 social_uid 之后应该没问题。

关于python-social-auth - Django 社交身份验证如何获得许可或尝试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49735093/

相关文章:

django - Facebook 社交身份验证登录 : Can't Load URL: The domain of this URL isn't included in the app's domains

python - python 社交身份验证中缺少 session 状态

python - 对于 django social_auth 中的类型字符 varying(16),DataError 值太长

Django-Socialauth - 如何将多个身份验证提供程序关联到单个用户帐户

django - python-social-auth 未获取正确的 Google OAuth2 详细信息

python - 如何在 Django 中分离登录重定向 URL

django - 强制谷歌通过 python 社交身份验证刷新 token

python - 在 Python Social Auth 中获取 Facebook 用户喜欢

Python 社交身份验证 Django 管道非类型错误

django - 检查当前用户是否使用任何 django 社交身份验证提供程序登录