Трубопровод Django Социальный Аут

Это мой первый проект с django, и я устанавливаю django social auth и работает нормально, но когда я использую пользовательские конвейеры, регистрация переходит в /login-error

использовать Python 2.6 Django 1.6.2

#settings.py

SOCIAL_AUTH_PIPELINE = (
'social_auth.backends.pipeline.social.social_auth_user',
'social_auth.backends.pipeline.user.create_user',
'social_auth.backends.pipeline.social.associate_user',
'social_auth.backends.pipeline.social.load_extra_data',
'social_auth.backends.pipeline.user.update_user_details',
'social_auth.backends.pipeline.misc.save_status_to_session',
'app.pipelines.get_user_avatar'
)


#pipelines.py

def get_user_avatar(strategy, user, response, is_new=False,*args,**kwargs):
url = None
if is_new and strategy.backend.name == 'facebook':
    url = "http://graph.facebook.com/%s/picture?type=large" % response['id']
if url:
    profile = user.get_profile()
    profile.photo = url # depends on where you saved it
    profile.save()


#models.py

from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.ForeignKey(User)
    points = models.IntegerField(default = 0)
    photo = models.URLField()

2 ответа

Решение

В вашем коде есть несколько деталей, которые не верны.

  1. 'social_auth.backends.pipeline.misc.save_status_to_session' следует использовать, только если вы планируете перенаправить пользователя в другое представление / форму (прерывая обработку и продолжая ее позже)
  2. Ваш пользовательский конвейер использует strategy который является параметром в python-social-auth но нет django-social-auth,

Поскольку вы начинаете, я бы предложил перейти непосредственно к https://github.com/omab/python-social-auth, так как django-social-auth устарела.

Вместо этого вам нужно использовать социальную аутентификацию Python. Социальная аутентификация Django устарела.

Другие вопросы по тегам