неверный сервис аутентификации django-social-auth - PullRequest
5 голосов
/ 06 июня 2011

Я пытался использовать django-social-auth сегодня, но оказалось, что я получаю сообщение об ошибке каждый раз, когда пытаюсь войти в систему, используя его.

Я использовал пример, найденный в его ветке git master, вставил свои ключи facebook, но когда я нажимаю, чтобы войти через Facebook, появляется ошибка «Неверный сервис аутентификации».

Это также происходит в логинах в Твиттере и orkut ... Кто-нибудь знает, почему это может происходить?

Большое спасибо!

Редактировать

Да, извините, я забыл опубликовать свой код.

settings.py

from os.path import abspath, dirname, basename, join

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ROOT_PATH = abspath(dirname(__file__))
PROJECT_NAME = basename(ROOT_PATH)

ADMINS = (
    # ('Your Name', 'your_email@domain.com'),
)
MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'test.db',
    }
}

TIME_ZONE = 'America/Chicago'
LANGUAGE_CODE = 'en-us'
SITE_ID = 1

USE_I18N = True
USE_L10N = True

MEDIA_ROOT = ''
ADMIN_MEDIA_PREFIX = '/admin-media/'
MEDIA_URL = ''

SECRET_KEY = '****'

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

ROOT_URLCONF = 'urls'

TEMPLATE_DIRS = (
    join(ROOT_PATH, 'templates')
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'social_auth',
    'app',
)

AUTHENTICATION_BACKENDS = (
    'social_auth.backends.twitter.TwitterBackend',
    'social_auth.backends.facebook.FacebookBackend',
    'social_auth.backends.google.GoogleOAuthBackend',
    'social_auth.backends.google.GoogleOAuth2Backend',
    'social_auth.backends.google.GoogleBackend',
    'social_auth.backends.yahoo.YahooBackend',
    'social_auth.backends.contrib.linkedin.LinkedinBackend',
    'social_auth.backends.OpenIDBackend',
    'social_auth.backends.contrib.livejournal.LiveJournalBackend',
    'django.contrib.auth.backends.ModelBackend',
)

try:
    from local_settings import *
except:
    pass

local_settings.py

TWITTER_CONSUMER_KEY              = ''
TWITTER_CONSUMER_SECRET           = ''
FACEBOOK_APP_ID                   = '226521154024720'
FACEBOOK_API_SECRET               = '9955be3b6e211b51921cb4b8eb08e69e'
LINKEDIN_CONSUMER_KEY             = ''
LINKEDIN_CONSUMER_SECRET          = ''
ORKUT_CONSUMER_KEY                = ''
ORKUT_CONSUMER_SECRET             = ''
GOOGLE_OAUTH2_CLIENT_KEY          = ''
GOOGLE_OAUTH2_CLIENT_SECRET       = ''
SOCIAL_AUTH_CREATE_USERS          = True
SOCIAL_AUTH_FORCE_RANDOM_USERNAME = False
SOCIAL_AUTH_DEFAULT_USERNAME      = 'socialauth_user'
SOCIAL_AUTH_COMPLETE_URL_NAME     = 'complete'
LOGIN_ERROR_URL                   = '/login/error/'
#SOCIAL_AUTH_USER_MODEL            = 'app.CustomUser'
SOCIAL_AUTH_ERROR_KEY             = 'socialauth_error'

Остальные коды точно такие же, как в примере на github.com/omab/django-social-auth если вам нужен какой-либо другой код, просто скажите мне.

Большое спасибо!

Ответы [ 3 ]

11 голосов
/ 21 марта 2012

В моем случае проблема заключалась в том, что у меня было FACEBOOK_APP_SECRET вместо FACEBOOK_API_SECRET. Это произошло из-за того, что я перешел с django-facebook на django-social-auth.

4 голосов
/ 26 января 2012

Возможно, у вас не установлено FACEBOOK_APP_ID или FACEBOOK_API_SECRET.

1 голос
/ 06 июня 2011

Ну, не видя вашей конфигурации, это будет просто выстрел в темноте. Но код django-social-auth имеет это:

def complete_process(request, backend):
    """Authentication complete process"""
    backend = get_backend(backend, request, request.path)
    if not backend:
        return HttpResponseServerError('Incorrect authentication service')
    ...

Итак, я бы предположил, что у вас не настроен правильный бэкэнд или, по крайней мере, Django не может его найти. Убедитесь, что в AUTHENTICATION_BACKENDS настроен соответствующий бэкэнд и что вы получили требуемые ключи OAuth от службы, которую хотите использовать.

Имейте в виду также, что эта ошибка возникает в коде django-social-auth в нескольких местах, но всегда, когда указанный бэкэнд не может быть получен.

...