如何使用社交授权进程异常设置

2024-05-18 23:44:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个网站上工作,通过django socialauth支持Facebook协会。这个库工作得很好,除非有时我需要处理“Account already in use”ValueError。在

从django socialauth的documentation(搜索“exception”)中可以看出,存在SOCIAL\u AUTH_PROCESS_EXCEPTIONS设置来指定异常处理程序。所以我创建了一个虚拟函数:

SOCIAL_AUTH_PROCESS_EXCEPTIONS = 'myapp.utility.process_exceptions'

但是当我启动ValueError时,处理程序永远不会被调用。以前有没有人使用过这个关键的社交认证过程例外?在

非常感谢!在


Tags: djangoinauth处理程序facebook网站usesocial
1条回答
网友
1楼 · 发布于 2024-05-18 23:44:55

我认为您最好的选择是修改身份验证管道并创建您自己的这个函数版本,它位于social_auth/backend/pipelines中/助理.py公司名称:

def associate_通过电子邮件发送(详细信息,*args,**kwargs): “”“返回与详细信息中返回的电子邮件地址相同的用户条目。”“” 电子邮件=详细信息。获取(“电子邮件”)

warn_setting('SOCIAL_AUTH_ASSOCIATE_BY_MAIL', 'associate_by_email')

if email and setting('SOCIAL_AUTH_ASSOCIATE_BY_MAIL', True):
    # try to associate accounts registered with the same email address,
    # only if it's a single object. AuthException is raised if multiple
    # objects are returned
    try:
        return {'user': User.objects.get(email=email)}
    except MultipleObjectsReturned:
        raise AuthException(kwargs['backend'], 'Not unique email address.')
    except User.DoesNotExist:
        pass

如果您替换这一行:
引发AuthException(kwargs['backend'],'Not unique email address.')
对于pass语句,如果数据库中有重复的电子邮件(意味着它不能关联任何特定的帐户),它将不会尝试通过电子邮件关联,而是传递到管道中的下一个项目。最终,这将导致创建一个新帐户。在

相关问题 更多 >

    热门问题