2013-03-14 2 views
17

Ich stehe vor einem Problem in Django-Allauth.Django: SocialApp passende Abfrage existiert nicht

I konfiguriert localhost:9000/admin/ mit folgenden Details

socialapp.

Anbieter: Name: Client-ID: App-ID oder Consumer-Key Key: Secret: etc.

stelle ich die SITE_ID = 2 (Weil ich die Standard-Website example.com geändert localhost: 9000)

In setting.py 


    INSTALLED_APPS = (
     'django.contrib.auth', 
     'django.contrib.contenttypes', 
     'django.contrib.sessions', 
     'django.contrib.sites', 
     'django.contrib.messages', 
     'django.contrib.staticfiles', 
     'django.contrib.admin', 
     'uni_form', 
     'allauth', 
     'allauth.account', 
     'allauth.socialaccount', 
     'bootstrapform', 
     # 'allauth.socialaccount.providers.twitter', 
     # 'allauth.socialaccount.providers.openid', 
     'allauth.socialaccount.providers.facebook', 
    ) 
    SOCIALACCOUNT_PROVIDERS = \ 
     { 'facebook': 
      { 'SCOPE': ['email', 'publish_stream'], 
       'AUTH_PARAMS': { 'auth_type': 'reauthenticate' }, 
       'METHOD': 'oauth2' , 
       'LOCALE_FUNC': 'path.to.callable'} } 

Wenn ich jetzt auf url http://localhost:9000/accounts/facebook/login

gehe

ich Störung erhalte: SocialApp matching query does not exist.

Bitte helfen Sie mir, was ich hier falsch machen könnte.

Antwort

37

Mit dem Django-Admin müssen Sie eine SocialApp erstellen, die Ihre Facebook-App-Anmeldedaten auflistet. Stellen Sie sicher, dass diese App an die richtige Site angeschlossen ist (z. B. django.contrib.sites.models.Site).

In Ihrem Fall muss eine django.contrib.sites.models.Site Instanz mit ID = 2 (überprüfen Sie die Sites Admin), die als eine Website für die SocialApp aufgeführt ist. Wenn

entweder die SocialApp fehlt oder wenn es erstellt wird, aber nicht auf eine Website angebracht für Ihre settings.SITE_ID, dann ist allauth nicht wissen, was App zu holen, in der Fehlermeldung verursacht, die Sie oben aufgeführt sind.

+0

dank Autor i fehlte django.contrib.sites.models.Site Linie – masterofdestiny

+6

ich nicht den Admin-Panel bekommen konnte meine Seiten-ID zu zeigen, so dass ich lud sie in einer Schale: 'von django.contrib.sites.models Site importieren und eine 'Site.objects.all()' erstellt, um die Liste zu sehen. 'Site.objects.get (id = 2)' wurde eigentlich auf example gesetzt, also musste ich meine Einstellungen auf 3 setzen, was mein Localhost war. –

+0

Ich bekam diesen Fehler beim Testen. Das gab mir einen Hinweis auf das Problem. In Ihrem Setup müssen Sie hinzufügen von allauth.utils importieren get_current_site von allauth.socialaccount.models import SocialApp sa = SocialApp.objects.create (name = 'Facebook', provider = 'facebook') sa.sites.add (get_current_site ()) –