2013-03-14 21 views
17

Mam do czynienia z problemem w django-allauth.Django: Zapytanie o dopasowanie SocialApp nie istnieje

skonfigurowałem localhost:9000/admin/ z następującymi szczegółami

socialapp.

provider: Nazwa: id Klient: App ID lub konsument klucz Klucz: Tajny: etc.

ustawić site_id = 2 (Bo zmienił example.com domyślna witryna 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'} } 

Teraz, kiedy idę na url http://localhost:9000/accounts/facebook/login

otrzymuję błąd: SocialApp matching query does not exist.

Proszę, pomóżcie mi, co tu robię źle.

Odpowiedz

37

Za pomocą administratora Django należy utworzyć SocialApp z listą referencji do aplikacji Facebook. Upewnij się, że ta aplikacja jest podłączona do właściwej witryny (jak w, django.contrib.sites.models.Site).

W twoim przypadku musi istnieć instancja django.contrib.sites.models.Site z identyfikatorem = 2 (sprawdź administratora strony), która jest wymieniona jako witryna dla SocialApp.

Jeśli brakuje SocialApp lub jest on utworzony, ale nie jest dołączony do witryny odpowiadającej twojemu settings.SITE_ID, to allauth nie wie, którą aplikację wybrać, czego skutkiem jest komunikat o błędzie wymieniony powyżej.

+0

dziękuję autorowi, że brakowało django.contrib.sites.models.Site line – masterofdestiny

+6

Nie mogłem dostać panelu administracyjnego pokazującego identyfikator mojej WITRYNY, więc załadowałem go w powłoce: 'from django.contrib.sites.models importować Site' i zrobił 'Site.objects.all()', aby zobaczyć listę. 'Site.objects.get (id = 2)' było ustawione na przykład, więc musiałem zmienić moje ustawienia na 3, do czego ustawiłem mój localhost. –

+0

Otrzymałem ten błąd podczas testowania. To dało mi klucz do problemu. W ustawieniach musisz dodać z allauth.utils import get_current_site z allauth.socialaccount.models import SocialApp sa = SocialApp.objects.create (name = 'Facebook', provider = 'facebook') sa.sites.add (get_current_site ()) –