在我的应用程序中,我需要为每个用户提供一封电子邮件。 Facebook 没有将其作为公共(public)个人资料的一部分提供,这对我来说很不方便。所以我请求许可:
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email', 'public_profile']
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
'fields': 'id,name,email',
}
现在,用户可以选择不授予电子邮件权限。我想在没有授予此许可的情况下使注册成为不可能。我该怎么做?
最佳答案
您需要add function到authentication 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/