5 Stimmen

django-social-auth falscher Authentifizierungsdienst

Ich habe heute versucht, django-social-auth zu verwenden, aber es stellte sich heraus, dass ich jedes Mal einen Fehler bekam, wenn ich versuchte, mich damit anzumelden.

Ich habe das Beispiel aus dem Git-Master-Zweig verwendet und meine Facebook-Schlüssel eingegeben, aber wenn ich mich mit Facebook anmelden möchte, erscheint die Fehlermeldung "Incorrect authentication service".

Das tritt auch bei Twitter- und Orkut-Anmeldungen auf... hat jemand eine Idee, warum das passieren kann?

Herzlichen Dank!

bearbeiten

Ja, tut mir leid, ich habe vergessen, meinen Code zu posten.

einstellungen.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'

Der Rest des Codes ist genau derselbe wie im Beispiel in github.com/omab/django-social-auth Wenn Sie einen anderen Code benötigen, sagen Sie es mir einfach.

Herzlichen Dank!

11voto

ady Punkte 1040

In meinem Fall lag das Problem darin, dass ich FACEBOOK_APP_SECRET anstelle von FACEBOOK_API_SECRET hatte. Das lag daran, dass ich von django-facebook zu django-social-auth migriert habe.

4voto

yekta Punkte 3233

Es kann sein, dass Sie die FACEBOOK_APP_ID oder FACEBOOK_API_SECRET nicht gesetzt haben.

1voto

Lockjaw Punkte 1752

Nun, ohne Ihre Konfiguration zu sehen, wird dies einfach ein Schuss ins Blaue sein. Aber die django-social-auth Code hat dies:

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

Aus dem Stegreif würde ich also vermuten, dass Sie nicht das richtige Backend konfiguriert haben oder dass Django es zumindest nicht finden kann. Vergewissern Sie sich, dass Sie das richtige Backend konfiguriert haben in AUTHENTICATION_BACKENDS und dass Sie die erforderlichen OAuth-Schlüssel von dem Dienst, den Sie verwenden möchten, erhalten haben.

Denken Sie auch daran, dass dieser Fehler in der django-social-auth Code an einigen Stellen, aber immer dann, wenn das angegebene Backend nicht abgerufen werden kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X