Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django social auth使用两个电子邮件帐户登录时出错_Python_Django_Email_Google Oauth_Django Socialauth - Fatal编程技术网

Python Django social auth使用两个电子邮件帐户登录时出错

Python Django social auth使用两个电子邮件帐户登录时出错,python,django,email,google-oauth,django-socialauth,Python,Django,Email,Google Oauth,Django Socialauth,我的应用程序必须通过user@mydomain.com(谷歌管理的电子邮件帐户) 第一次启动应用程序时,我可以使用该帐户正常登录。 当我注销(django注销)并尝试使用我的Gmail帐户登录时,问题开始出现(由于我的电子邮件验证管道,这是不允许的) 第一个帐户是我的user@mydomain.com第二个是我的user@gmail.com账户 我有一个管道来验证用户电子邮件是否属于我的域 点击@gmail.com帐户会从我的管道返回一个错误 @partial def require_mydo

我的应用程序必须通过user@mydomain.com(谷歌管理的电子邮件帐户)

第一次启动应用程序时,我可以使用该帐户正常登录。 当我注销(django注销)并尝试使用我的Gmail帐户登录时,问题开始出现(由于我的电子邮件验证管道,这是不允许的)

第一个帐户是我的user@mydomain.com第二个是我的user@gmail.com账户

我有一个管道来验证用户电子邮件是否属于我的域

点击@gmail.com帐户会从我的管道返回一个错误

@partial
def require_mydomain_email(strategy, details, user=None, is_new=False, *args, **kwargs):
    if user and user.email:
        if '@mydomain' in user.email:
            return
    elif is_new and not details.get('email'):
        email = strategy.request_data().get('email')
        if email:
            details['email'] = email
        else:
            current_partial = kwargs.get('current_partial')
            return strategy.redirect(
                '/email?partial_token={0}'.format(current_partial.token)
            )
    else:
        email = details.get('email')
        if email:
            if '@mydomain' in email:
                return
        else:
            current_partial = kwargs.get('current_partial')
            messages.add_message(strategy.request, messages.WARNING, 'Your email must be an @mydomain email')
            return strategy.redirect('/'.format(current_partial.token))
主要问题是:

尝试使用gmail.com帐户登录后,无论我尝试登录哪个帐户,我的后端都会从谷歌接收@gmail数据

以下是我的管道设置:

SOCIAL_AUTH_PIPELINE = (
    'social_core.pipeline.social_auth.social_details',
    'social_core.pipeline.social_auth.social_uid',
    'social_core.pipeline.social_auth.auth_allowed',
    'social_core.pipeline.social_auth.social_user',
    'social_core.pipeline.user.get_username',
    'social_core.pipeline.mail.mail_validation',
    'accounts.google_authentication.pipeline.require_psafe_email',
    'social_core.pipeline.user.create_user',
    'social_core.pipeline.social_auth.associate_user',
    'social_core.pipeline.debug.debug',
    'social_core.pipeline.social_auth.load_extra_data',
    'social_core.pipeline.user.user_details',
    'social_core.pipeline.debug.debug'
)
有什么有用的想法吗

编辑1:

运行后我的管道应用程序中的参数详细信息(替换的个人数据):

然后我注销,尝试使用@gmail帐户登录(用于测试porpuses):


即使我尝试使用user@mydomain.com我再次收到@gmail数据

如果您定义
社交身份验证(SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS={'prompt':'select_account'},会发生什么情况
?同样的错误。奇怪的是,当我查看我的social auth partil表时,它会显示如下信息:{“kwargs”:{“uid”:myemail@gmail.com“,”详细信息“:{”用户名“:”Gmail用户名“,”名字“:”姓名“,”全名“:”我的全名“,”姓氏“:”姓氏“,”电子邮件“:”myemail@gmail.com},“社交”:null,“用户”:null,“用户名”:“用户名”91A8483897684742,“is_new”:true,“request”:{“hd”:[“companydomain.com”]最后,在“request”键上有一个"companydomain.com公司域名是正确的,但返回的电子邮件是我的个人信息gmail@omab谢谢!设置
SOCIAL\u AUTH\u GOOGLE\u OAUTH2\u AUTH\u EXTRA\u ARGUMENTS
是为我解决这个问题的设置。我在任何地方都找不到该设置的文档,也没有。我是否遗漏了什么?你怎么知道的?如果你u define
SOCIAL\u AUTH\u GOOGLE\u OAUTH2\u AUTH\u EXTRA\u ARGUMENTS={'prompt':'select\u account'}
?同样的错误。奇怪的是,当我查看我的SOCIAL AUTH partil表时,它显示如下信息:{“kwargs”:{“uid”:myemail@gmail.com“,”详细信息“:{”用户名“:”Gmail用户名“,”名字“:”姓名“,”全名“:”我的全名“,”姓氏“,”:“姓氏”,“电子邮件”:myemail@gmail.com},“social”:null,“user”:null,“username”:“username91a8483897684742”,“is_new”:true,“request”:{“hd”:[“companydomain.com”]最后,“request”键上有一个“companydomain.com公司域是正确的,但返回的电子邮件是我的个人信息gmail@omab谢谢!设置
SOCIAL\u AUTH\u GOOGLE\u OAUTH2\u AUTH\u EXTRA\u ARGUMENTS
是为我解决这一问题的设置。我在任何地方都找不到该设置的文档,也没有。我遗漏了什么吗?你是怎么知道的?
{'fullname': 'My Name', 'email': 'user@mydomain', 'first_name': 'Name', 'username': 'user.name', 'last_name': 'LastName'}
{'fullname': 'My Full Name', 'email': 'myuser@gmail.com', 'first_name': 'MyName', 'username': 'username', 'last_name': 'Last Name'}