Пользовательские пользователи с django allauth

Я пытаюсь использовать пользовательского пользователя с django-allauth/social auth. В settings.py у меня есть

AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    "django.contrib.auth.backends.ModelBackend",

    # `allauth` specific authentication methods, such as login by e-mail
    "allauth.account.auth_backends.AuthenticationBackend",
)

SOCIALACCOUNT_PROVIDERS = \
    {'facebook':
       {'SCOPE': ['email', 'user_likes', 'user_status', 'user_about_me', 'basic_info', 'read_stream'],
        'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
        'METHOD': 'oauth2',
        'LOCALE_FUNC': 'path.to.callable',
        'VERIFIED_EMAIL': False}}


LOGIN_REDIRECT_URL = '/results/' 
AUTH_USER_MODEL = 'users.User'

В папке пользователей в папке проекта у меня есть adapter.py:

from django.conf import settings
from allauth.account.adapter import DefaultAccountAdapter

class MyAccountAdapter(DefaultAccountAdapter):

def get_login_redirect_url(self, request):
    path = "/results/{username}/"
    return path.format(username=request.user.username)

В моделях.py:

from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
    user_data = models.TextField(null=True)

Когда я пытаюсь войти через facebook, меня перенаправляют на facebook, но возвращаясь на сайт, я получаю следующее сообщение об ошибке

Django version 1.6.2
Exception Type: DoesNotExist
User matching query does not exist.

и в консоли

"GET /results/facebook/login/? HTTP/1.1" 302 0
"GET /results/facebook/login/callback/XXX HTTP/1.1" 500

Любая идея, что я делаю неправильно?


person user3426600    schedule 05.06.2014    source источник


Ответы (1)


Я думаю, вы могли бы искать имя пользователя с адресом электронной почты или наоборот. Попробуйте указать это:

ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_AUTHENTICATION_METHOD = 'email'
person e.barojas    schedule 22.02.2016