【问题标题】:Python social auth Django pipeline nonetype errorsPython 社交身份验证 Django 管道非类型错误
【发布时间】:2015-03-19 12:18:32
【问题描述】:

我的 Django 设置文件中有以下管道,用于使用 python-social-auth 模块登录 Facebook:

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.get_username',
    'social.pipeline.user.user_details',
    'social.pipeline.social_auth.associate_by_email',
)

我的登录方式是这样的:

当我第一次尝试使用 Facebook 进行身份验证时,我得到以下信息: /complete/facebook/ 处的 AttributeError 'NoneType' 对象没有属性 'provider'

def user_login(request):
    """ Login page view."""

    #context = RequestContext(request)
    context = RequestContext(request,
                             {'request': request,
                              'user': request.user})

    user = request.user

    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)  # authentication

    if not user.is_anonymous():
        print user
        if not request.method == 'POST':

            user.backend = 'django.contrib.auth.backends.ModelBackend'
        if user.is_active:
            login(request, user)
            return HttpResponseRedirect('/')
        else:
            return render_to_response('main/login.html', {}, context)

    else:
        return render_to_response('main/login.html', {}, context)

但是,如果我注释掉 SOCIAL_AUTH_PIPELINE 并尝试登录,那就没问题了。当然,一旦社交身份验证用户进入数据库,Pipleline 就会正常工作。

如果有任何想法可以在哪里寻找错误,我将不胜感激。

【问题讨论】:

    标签: python django pipeline python-social-auth


    【解决方案1】:

    这可能不是你的原因,因为在我的情况下,无论管道是什么,我都会遇到这个错误,但它可能对其他人有帮助。

    在我的情况下,我收到了这个错误,因为我从auth_user 表中删除了用户,但social_auth_usersocialauth 表中仍然存在指向不存在的用户 ID 的记录,这阻止了使用正确的用户创建记录。 在我的情况下,可以通过从 social_auth_usercoaialauth 表中删除记录或修复该记录以指向现有用户 ID 来解决这个问题。

    【讨论】:

      【解决方案2】:

      尝试添加此设置: SOCIAL_AUTH_ALWAYS_ASSOCIATE = 真

      您的用户似乎没有链接到社交资料。

      【讨论】:

      • 不,不是这样的。
      猜你喜欢
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多