python - Python-social-auth 中用户名字段的问题

标签 python django python-social-auth

我正在为 face-book 使用 Python socia auth。我修改了用户模型的默认 Django 行为并删除了 username 字段。

我在自定义用户模型中添加了这个:USERNAME_FIELD = 'email'

但我在尝试登录时遇到此错误

TypeError at /complete/facebook/
'username' is an invalid keyword argument for this function

我知道它在尝试创建用户时找不到用户名字段,因此会抛出此错误。

我已经定义了以下设置,但我的问题仍然存在:

SOCIAL_AUTH_USER_MODEL = 'accounts.User'
SOCIAL_AUTH_USERNAME_IS_FULL_EMAIL = True

有什么解决办法吗?

最佳答案

我知道这个问题已经发布几个月了,但我遇到了同样的问题并找到了解决方案。

这个问题可以用pipeline来解决。默认管道执行此操作:

def create_user(strategy, details, user=None, *args, **kwargs):
    if user:
        return {'is_new': False}

    fields = dict((name, kwargs.get(name) or details.get(name))
                  for name in strategy.setting('USER_FIELDS',
                                               USER_FIELDS))
    if not fields:
        return

    return {
        'is_new': True,
        'user': strategy.create_user(**fields)
    }

在您的设置中覆盖 USER_FIELDS,仅保留 email。或者,您可以创建全新的 create_user 方法。

关于python - Python-social-auth 中用户名字段的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29413741/

相关文章:

python - 了解 sklearn.feature_extraction.text 的 CountVectorizer 类中的 _count_vocab 方法

python - 如何查询Django ORM中的二层数据?

django - 在没有 worker 的情况下运行 celery 任务

javascript - 如何使用ajax向服务器提交表单?

python - 嵌套括号空循环解释

python - 我怎样才能保存这个 matplotlib 图,这样 x 轴标签就不会被裁剪掉?

python - 在 django admin 中呈现时强制转换为 Unicode : need string or buffer, NoneType

python - 如何使用 python-social-auth 在代码中通过访问 token 进行身份验证

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

python - 社会认证django