【问题标题】:Django social auth for facebook giving an errorfacebook 的 Django 社交身份验证给出错误
【发布时间】:2013-02-18 08:21:07
【问题描述】:

我正在使用:

  • django-social-auth v 0.7.19
  • django 1.4.3

models.py:

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    username = models.CharField(max_length = 64, blank = True, null = True)
    last_login = models.DateField(blank = True, null = True)
    is_active = models.BooleanField(blank = True)

social_auth pipeline.py:

from social_auth.backends.pipeline.user import create_user


def create_user(backend, details, response, uid, username, user=None, *args,
            **kwargs):

    if user:
        return {'user': user}
    if not username:
        return None

    user, created = User.objects.get_or_create(username = username)
    profile, created = UserProfile.objects.get_or_create(user = user)

    return {
        'user': user,
        'profile' : profile,
        'is_new': True
    }

问题:

  1. 当我从模型中取出字段 username、last_login 和 is_active 时,社交身份验证会给我一个 DataBaseError,因为这些列是必需的。我正在使用 ForeignKey User 但它无法检测到它。

  2. 我正在重写社交身份验证的 create_user 方法来创建我的用户及其个人资料。当函数返回时,会创建用户和配置文件,但仍会在错误页面上重定向。不知道为什么。

【问题讨论】:

    标签: django django-models django-socialauth django-1.4


    【解决方案1】:

    尝试使用此代码更改您的个人资料创建:

    profile, created = UserProfile.objects.get_or_create(user=user, defaults={
        'username': user.username,
        'last_login': date.today(),
        'is_active': True
    })
    

    或者为这些字段添加一些默认值。

    编辑:关键字参数是默认值而不是默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      相关资源
      最近更新 更多